| Index: compiler/javatests/com/google/dart/compiler/IdeTest.java
|
| diff --git a/compiler/javatests/com/google/dart/compiler/IdeTest.java b/compiler/javatests/com/google/dart/compiler/IdeTest.java
|
| deleted file mode 100644
|
| index 198a14554df52b6d26f4928f7bc23b8ec7a44f7f..0000000000000000000000000000000000000000
|
| --- a/compiler/javatests/com/google/dart/compiler/IdeTest.java
|
| +++ /dev/null
|
| @@ -1,270 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler;
|
| -
|
| -import com.google.dart.compiler.ast.DartClass;
|
| -import com.google.dart.compiler.ast.DartExprStmt;
|
| -import com.google.dart.compiler.ast.DartExpression;
|
| -import com.google.dart.compiler.ast.DartIdentifier;
|
| -import com.google.dart.compiler.ast.DartMethodDefinition;
|
| -import com.google.dart.compiler.ast.DartNode;
|
| -import com.google.dart.compiler.ast.DartPropertyAccess;
|
| -import com.google.dart.compiler.ast.DartReturnStatement;
|
| -import com.google.dart.compiler.ast.DartStatement;
|
| -import com.google.dart.compiler.ast.DartUnit;
|
| -import com.google.dart.compiler.ast.DartUnqualifiedInvocation;
|
| -import com.google.dart.compiler.ast.LibraryUnit;
|
| -import com.google.dart.compiler.resolver.ClassElement;
|
| -import com.google.dart.compiler.resolver.CoreTypeProvider;
|
| -import com.google.dart.compiler.resolver.CoreTypeProviderImplementation;
|
| -import com.google.dart.compiler.resolver.Element;
|
| -import com.google.dart.compiler.resolver.FieldElement;
|
| -import com.google.dart.compiler.resolver.MethodElement;
|
| -import com.google.dart.compiler.resolver.Scope;
|
| -import com.google.dart.compiler.testing.TestCompilerConfiguration;
|
| -import com.google.dart.compiler.testing.TestCompilerContext;
|
| -import com.google.dart.compiler.testing.TestCompilerContext.EventKind;
|
| -import com.google.dart.compiler.testing.TestDartArtifactProvider;
|
| -import com.google.dart.compiler.testing.TestLibrarySource;
|
| -import com.google.dart.compiler.type.FunctionType;
|
| -import com.google.dart.compiler.type.InterfaceType;
|
| -import com.google.dart.compiler.type.Type;
|
| -import com.google.dart.compiler.type.TypeAnalyzer;
|
| -
|
| -import junit.framework.TestCase;
|
| -
|
| -import java.io.IOException;
|
| -
|
| -/**
|
| - * Test of the IDE API in DartCompiler.
|
| - */
|
| -public class IdeTest extends TestCase {
|
| -
|
| - private final TestCompilerContext context = new TestCompilerContext(EventKind.ERROR,
|
| - EventKind.TYPE_ERROR) {
|
| - @Override
|
| - protected void handleEvent(DartCompilationError event, EventKind kind) {
|
| - super.handleEvent(event, kind);
|
| - // For debugging:
|
| - // System.err.println(event);
|
| - }
|
| - };
|
| -
|
| - private final DartCompilerListener listener = context;
|
| -
|
| - private final DartArtifactProvider provider = new TestDartArtifactProvider();
|
| -
|
| - private final CompilerConfiguration config = new TestCompilerConfiguration();
|
| -
|
| - public void testAnalyseNoSemicolonPropertyAccess() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "no_semicolon_property_access",
|
| - "class Foo {",
|
| - " int i;",
|
| - " void foo() {",
|
| - " i.y", // Missing semicolon.
|
| - " }",
|
| - "}");
|
| - assertEquals("errorCount", 1, context.getErrorCount()); // Missing semicolon.
|
| - assertEquals("typeErrorCount", 1, context.getTypeErrorCount()); // No member named "y".
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - FieldElement element = (FieldElement) qualifierElement(statement.getExpression());
|
| - assertEquals("int", element.getType().getElement().getName());
|
| - }
|
| -
|
| - public void testAnalyseNoSemicolonBrokenPropertyAccess() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "no_semicolon_broken_property_access",
|
| - "class Foo {",
|
| - " int i;",
|
| - " void foo() {",
|
| - " i.", // Syntax error and missing semicolon.
|
| - " }",
|
| - "}");
|
| - // Expected identifier and missing semicolon
|
| - assertEquals("errorCount", 2, context.getErrorCount());
|
| - assertEquals("typeErrorCount", 1, context.getTypeErrorCount()); // No member named "".
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - FieldElement element = (FieldElement) qualifierElement(statement.getExpression());
|
| - assertEquals("int", element.getType().getElement().getName());
|
| - }
|
| -
|
| - public void testAnalyseBrokenPropertyAccess() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "broken_property_access",
|
| - "class Foo {",
|
| - " int i;",
|
| - " void foo() {",
|
| - " i.;", // Syntax error here.
|
| - " }",
|
| - "}");
|
| - assertEquals("errorCount", 1, context.getErrorCount()); // Expected identifier.
|
| - assertEquals("typeErrorCount", 1, context.getTypeErrorCount()); // No member named "".
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - FieldElement element = (FieldElement) qualifierElement(statement.getExpression());
|
| - assertEquals("int", element.getType().getElement().getName());
|
| - }
|
| -
|
| - public void testAnalyseNoSemicolonIdentifier() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "no_semicolon_identifier",
|
| - "class Foo {",
|
| - " int i;",
|
| - " void foo() {",
|
| - " i", // Missing semicolon.
|
| - " }",
|
| - "}");
|
| - assertEquals("errorCount", 1, context.getErrorCount()); // Missing semicolon.
|
| - assertEquals("typeErrorCount", 0, context.getTypeErrorCount());
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - FieldElement field = (FieldElement) targetElement(statement.getExpression());
|
| - assertEquals("int", field.getType().getElement().getName());
|
| - }
|
| -
|
| - public void testAnalyseNoSemicolonMethodCall() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "no_semicolon_method_call",
|
| - "class Foo {",
|
| - " int i () { return 0; }",
|
| - " void foo() {",
|
| - " i()", // Missing semicolon.
|
| - " }",
|
| - "}");
|
| - assertEquals("errorCount", 1, context.getErrorCount()); // Missing semicolon.
|
| - assertEquals("typeErrorCount", 0, context.getTypeErrorCount());
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - DartExpression expression = statement.getExpression();
|
| - DartUnqualifiedInvocation invocation = (DartUnqualifiedInvocation) expression;
|
| - MethodElement method = (MethodElement) targetElement(invocation.getTarget());
|
| - assertEquals("i", method.getName());
|
| - FunctionType type = (FunctionType) method.getType();
|
| - assertEquals("int", type.getReturnType().getElement().getName());
|
| - }
|
| -
|
| - public void testAnalyseVoidKeyword() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "void_keyword",
|
| - "class Foo {",
|
| - " Function voidFunction;",
|
| - " void foo() {",
|
| - " void", // Missing semicolon and keyword
|
| - " }",
|
| - "}");
|
| - // Expected identifier and missing semicolon.
|
| - assertEquals("errorCount", 2, context.getErrorCount());
|
| - // You can't use 'void' as a member name. It might be the beginning of a variable declaration
|
| - // so it isn't an error in and of itself.
|
| - assertEquals("typeErrorCount", 0, context.getTypeErrorCount());
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - DartIdentifier expression = (DartIdentifier) statement.getExpression();
|
| - assertEquals("", expression.getName());
|
| - }
|
| -
|
| - public void testAnalyseVoidKeywordPropertyAccess() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "void_keyword_property_access",
|
| - "class Foo {",
|
| - " Function voidFunction;",
|
| - " void foo() {",
|
| - " this.void", // Missing semicolon and keyword
|
| - " }",
|
| - "}");
|
| - // Expected identifier and missing semicolon.
|
| - assertEquals("errorCount", 2, context.getErrorCount());
|
| - assertEquals("typeErrorCount", 1, context.getTypeErrorCount());
|
| - DartExprStmt statement = (DartExprStmt) firstStatementOfMethod(unit, "Foo", "foo");
|
| - DartPropertyAccess expression = (DartPropertyAccess) statement.getExpression();
|
| - assertEquals("", expression.getPropertyName());
|
| - }
|
| -
|
| - public void testReturnIntTypeAnalysis() {
|
| - DartUnit unit =
|
| - analyzeUnit(
|
| - "return_int_type_analysis",
|
| - "class Foo {",
|
| - " int i;",
|
| - " int foo() {",
|
| - " return i;",
|
| - " }",
|
| - "}");
|
| - Scope unitScope = unit.getLibrary().getElement().getScope();
|
| - CoreTypeProvider typeProvider = new CoreTypeProviderImplementation(unitScope, context);
|
| - DartClass classNode = getClassOfUnit(unit, "Foo");
|
| - DartReturnStatement rtnStmt = (DartReturnStatement) firstStatementOfMethod(unit, "Foo", "foo");
|
| - ClassElement classElement = classNode.getElement();
|
| - InterfaceType definingType = classElement.getType();
|
| - Type type = TypeAnalyzer.analyze(rtnStmt.getValue(), typeProvider, context, definingType);
|
| - assertNotNull(type);
|
| - assertEquals("int", type.getElement().getName());
|
| - }
|
| -
|
| - private Element targetElement(DartExpression expression) {
|
| - DartIdentifier identifier = (DartIdentifier) expression;
|
| - Element element = identifier.getElement();
|
| - assertNotNull(element);
|
| - return element;
|
| - }
|
| -
|
| - private Element qualifierElement(DartExpression node) {
|
| - DartPropertyAccess propertyAccess = (DartPropertyAccess) node;
|
| - DartIdentifier identifier = (DartIdentifier) propertyAccess.getQualifier();
|
| - Element element = identifier.getElement();
|
| - assertNotNull(element);
|
| - return element;
|
| - }
|
| -
|
| - private DartClass getClassOfUnit(DartUnit unit, String cls) {
|
| - DartClass dartClass = null;
|
| - for (DartNode node : unit.getTopLevelNodes()) {
|
| - DartClass classNode = (DartClass) node;
|
| - if (node instanceof DartClass) {
|
| - if (classNode.getName().getName().equals(cls)) {
|
| - dartClass = classNode;
|
| - }
|
| - }
|
| - }
|
| - assertNotNull(dartClass);
|
| - return dartClass;
|
| - }
|
| -
|
| - private DartStatement firstStatementOfMethod(DartUnit unit, String cls, String member) {
|
| - DartClass classNode = getClassOfUnit(unit, cls);
|
| - for (DartNode memberNode : classNode.getMembers()) {
|
| - if (memberNode instanceof DartMethodDefinition) {
|
| - DartMethodDefinition methodNode = (DartMethodDefinition) memberNode;
|
| - if (methodNode.getName() instanceof DartIdentifier) {
|
| - DartIdentifier methodName = (DartIdentifier) methodNode.getName();
|
| - if (methodName.getName().equals(member)) {
|
| - return methodNode.getFunction().getBody().getStatements().get(0);
|
| - }
|
| - }
|
| - }
|
| - }
|
| - fail();
|
| - return null;
|
| - }
|
| -
|
| - private DartUnit analyzeUnit(String name, String... sourceLines) throws AssertionError {
|
| - TestLibrarySource lib = new TestLibrarySource(name);
|
| - lib.addSource(name + ".dart", sourceLines);
|
| - LibraryUnit libraryUnit;
|
| - try {
|
| - libraryUnit = DartCompiler.analyzeLibrary(lib, null, config, provider, listener);
|
| - assertNotNull("libraryUnit == null", libraryUnit);
|
| - } catch (IOException e) {
|
| - throw new AssertionError(e);
|
| - }
|
| - DartUnit unit = libraryUnit.getUnit(name + ".dart");
|
| - assertNotNull("unit == null", unit);
|
| - return unit;
|
| - }
|
| -}
|
|
|