| Index: compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
|
| diff --git a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
|
| index ebf99072938382062a07c17dc5c11500f80ea2b4..d84e226145a5c51fbb159576949e4521981f2fe3 100644
|
| --- a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
|
| +++ b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
|
| @@ -255,7 +255,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, 10, 1, 27),
|
| errEx(TypeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, 11, 1, 17));
|
| }
|
| -
|
| +
|
| /**
|
| * Type parameters should not conflict with formal parameters.
|
| * <p>
|
| @@ -433,7 +433,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.EXPECTED_CONSTANT_EXPRESSION, 6, 10, 8));
|
| }
|
| -
|
| +
|
| /**
|
| * It is a compile-time error if the class C implements the operator ==.
|
| * <p>
|
| @@ -477,7 +477,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(TypeErrorCode.CASE_EXPRESSIONS_SHOULD_BE_SAME_TYPE, 5, 10, 3));
|
| }
|
| -
|
| +
|
| public void test_switchExpression_case_constLocalVariable() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -490,7 +490,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(libraryResult.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=2862
|
| @@ -634,7 +634,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertTrue(message.contains("void foo()"));
|
| }
|
| }
|
| -
|
| +
|
| /**
|
| * In contrast, if A is intended to be concrete, the checker should warn about all unimplemented
|
| * methods, but allow clients to instantiate it freely.
|
| @@ -791,7 +791,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(TypeErrorCode.CONCRETE_CLASS_WITH_UNIMPLEMENTED_MEMBERS, 5, 7, 1));
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=5327
|
| @@ -998,7 +998,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.NO_SUCH_NAMED_PARAMETER, 15, 18, 4),
|
| errEx(ResolverErrorCode.DUPLICATE_NAMED_ARGUMENT, 16, 25, 5));
|
| }
|
| -
|
| +
|
| /**
|
| * Test that optional positional and named parameters are handled separately.
|
| */
|
| @@ -1364,7 +1364,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.CANNOT_ASSIGN_TO_FINAL, 4, 3, 1));
|
| }
|
| -
|
| +
|
| public void test_assignFinal_topLevelVariable() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -1377,7 +1377,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.CANNOT_ASSIGN_TO_FINAL, 4, 3, 1));
|
| }
|
| -
|
| +
|
| public void test_assignFinal_instanceVariable_inConstructor() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -1407,7 +1407,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(libraryResult.getErrors());
|
| }
|
| -
|
| +
|
| public void test_constantEvaluationException_divZero() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -1473,7 +1473,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.NO_SUCH_TYPE_CONST, 3, 9, 10));
|
| }
|
| -
|
| +
|
| public void test_constInstanceCreation_noSuchConstructor() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -1486,7 +1486,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.NEW_EXPRESSION_NOT_CONST_CONSTRUCTOR, 4, 11, 10));
|
| }
|
| -
|
| +
|
| public void test_constInstanceCreation_notType() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -1669,7 +1669,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| result.getErrors(),
|
| errEx(ResolverErrorCode.CANNOT_OVERRIDE_METHOD_OPTIONAL_PARAMS, 5, 3, 3));
|
| }
|
| -
|
| +
|
| public void test_implementsAndOverrides_moreOptionalPositionalParameter() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "abstract class A {",
|
| @@ -1725,7 +1725,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.CANNOT_OVERRIDE_METHOD_DEFAULT_VALUE, 11, 7, 5),
|
| errEx(TypeErrorCode.CANNOT_OVERRIDE_METHOD_DEFAULT_VALUE, 12, 7, 7));
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=3183
|
| @@ -1879,7 +1879,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "}");
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=7597
|
| @@ -2067,7 +2067,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| public void test_inferredTypes_noMemberWarnings() throws Exception {
|
| // disabled by default
|
| {
|
| @@ -2214,7 +2214,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertInferredElementTypeString(testUnit, "v6", "Map<String, int>", INFERRED);
|
| assertInferredElementTypeString(testUnit, "v7", "int", INFERRED);
|
| }
|
| -
|
| +
|
| public void test_typesPropagation_arrayAccess() throws Exception {
|
| analyzeLibrary(
|
| "class A {}",
|
| @@ -2365,7 +2365,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertInferredElementTypeString(testUnit, "v3", "int", INFERRED_EXACT);
|
| assertInferredElementTypeString(testUnit, "v4", "Object", INFERRED);
|
| }
|
| -
|
| +
|
| public void test_typesPropagation_multiAssign_DoWhile() throws Exception {
|
| analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -2449,7 +2449,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertInferredElementTypeString(testUnit, "a1", "List<Object>", INFERRED);
|
| assertInferredElementTypeString(testUnit, "b1", "List<Object>", INFERRED);
|
| }
|
| -
|
| +
|
| /**
|
| * Prefer specific type, not "dynamic" type argument.
|
| * <p>
|
| @@ -2472,7 +2472,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertInferredElementTypeString(testUnit, "a1", "List<String>", INFERRED);
|
| assertInferredElementTypeString(testUnit, "b1", "List<String>", INFERRED);
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=4791
|
| @@ -2943,7 +2943,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| // we exited "if" Block, so "assert" may be was not executed, so we don't know type
|
| assertInferredElementTypeString(testUnit, "v5", "dynamic", EXACT);
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=4410
|
| @@ -3029,7 +3029,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertInferredElementTypeString(testUnit, "v1", "int", INFERRED_EXACT);
|
| assertInferredElementTypeString(testUnit, "v2", "double", INFERRED_EXACT);
|
| }
|
| -
|
| +
|
| /**
|
| * If field is not final, we don't know if is will be assigned somewhere else, may be even not in
|
| * there same unit, so we cannot be sure about its type.
|
| @@ -3063,7 +3063,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertInferredElementTypeString(testUnit, "v1", "int", INFERRED_EXACT);
|
| assertInferredElementTypeString(testUnit, "v2", "double", INFERRED_EXACT);
|
| }
|
| -
|
| +
|
| /**
|
| * If field is not final, we don't know if is will be assigned somewhere else, may be even not in
|
| * there same unit, so we cannot be sure about its type.
|
| @@ -3980,7 +3980,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.DEPRECATED_ELEMENT, 11, 7, 1),
|
| errEx(TypeErrorCode.DEPRECATED_ELEMENT, 11, 9, 7));
|
| }
|
| -
|
| +
|
| public void test_metadata_resolving() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -4260,7 +4260,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertHasFieldElement(binary.getArg1(), "A", "b");
|
| }
|
| }
|
| -
|
| +
|
| /**
|
| * Test for resolving variants of top-level property access and unary/binary expressions.
|
| * <p>
|
| @@ -4330,7 +4330,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| FieldElement fieldElement = (FieldElement) element;
|
| assertHasFieldElement(fieldElement, className, fieldName);
|
| }
|
| -
|
| +
|
| private static void assertHasFieldElement(FieldElement element, String className, String fieldName) {
|
| EnclosingElement enclosingElement = element.getEnclosingElement();
|
| String enclosingName;
|
| @@ -4344,14 +4344,14 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| String elementName = element.getName();
|
| assertEquals(fieldName, elementName);
|
| }
|
| -
|
| +
|
| private static void assertHasMethodElement(DartNode node, String className, String methodName) {
|
| Element element = node.getElement();
|
| assertTrue("" + node + " " + element, element instanceof MethodElement);
|
| MethodElement methodElement = (MethodElement) element;
|
| assertMethodElement(methodElement, className, methodName);
|
| }
|
| -
|
| +
|
| private static void assertMethodElement(MethodElement element, String className, String methodName) {
|
| EnclosingElement enclosingElement = element.getEnclosingElement();
|
| String enclosingName;
|
| @@ -4406,7 +4406,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.NOT_A_FUNCTION_TYPE, 10, 3, 3),
|
| errEx(TypeErrorCode.NOT_A_FUNCTION_TYPE, 11, 3, 9));
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=3223
|
| @@ -4420,7 +4420,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "}");
|
| assertErrors(libraryResult.getErrors());
|
| }
|
| -
|
| +
|
| public void test_invokeNonFunction_getter() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -4632,7 +4632,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * There should be no problem reported, because assignment of "a" cascade to "b" with type "B"
|
| * implicitly set type of "a" to "B".
|
| @@ -4674,7 +4674,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * We assign "a" to field "Holder.b" of type "B", so implicitly set type of "a" to "B".
|
| * <p>
|
| @@ -4814,7 +4814,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.CANNOT_BE_RESOLVED, 11, 3, 7),
|
| errEx(TypeErrorCode.CANNOT_BE_RESOLVED, 12, 11, 7));
|
| }
|
| -
|
| +
|
| /**
|
| * If "unknown" is separate identifier, it is handled as "this.unknown", but "this" is not
|
| * accessible in static context.
|
| @@ -4854,7 +4854,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.CANNOT_BE_RESOLVED, 4, 3, 7),
|
| errEx(TypeErrorCode.CANNOT_BE_RESOLVED, 5, 11, 7));
|
| }
|
| -
|
| +
|
| /**
|
| * Unresolved constructor is warning.
|
| * <p>
|
| @@ -4877,7 +4877,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.NO_SUCH_TYPE, 7, 7, 1),
|
| errEx(TypeErrorCode.NEW_EXPRESSION_NOT_CONSTRUCTOR, 7, 9, 17));
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=4383
|
| @@ -4893,7 +4893,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.USE_ASSIGNMENT_ON_SETTER, 4, 3, 12));
|
| }
|
| -
|
| +
|
| /**
|
| * Every {@link DartExpression} should have {@link Type} set. Just to don't guess this type at
|
| * many other points in the Editor.
|
| @@ -4908,6 +4908,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| " process(aaa);",
|
| "}");
|
| testUnit.accept(new ASTVisitor<Void>() {
|
| + @Override
|
| public Void visitIdentifier(DartIdentifier node) {
|
| // ignore declaration
|
| if (node.getParent() instanceof DartDeclaration) {
|
| @@ -4923,7 +4924,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| }
|
| });
|
| }
|
| -
|
| +
|
| /**
|
| * Every {@link DartExpression} should have {@link Type} set. Just to don't guess this type at
|
| * many other points in the Editor.
|
| @@ -4938,6 +4939,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| " AAA.foo();",
|
| "}");
|
| testUnit.accept(new ASTVisitor<Void>() {
|
| + @Override
|
| public Void visitIdentifier(DartIdentifier node) {
|
| // ignore declaration
|
| if (node.getParent() instanceof DartDeclaration) {
|
| @@ -4976,7 +4978,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.USE_ASSIGNMENT_ON_SETTER, 5, 5, 12),
|
| errEx(TypeErrorCode.USE_ASSIGNMENT_ON_SETTER, 10, 5, 12));
|
| }
|
| -
|
| +
|
| private abstract static class ArgumentsBindingTester {
|
| static List<DartExpression> arguments;
|
| void doTest(DartUnit unit) {
|
| @@ -5034,7 +5036,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| }
|
| }.doTest(testUnit);
|
| }
|
| -
|
| +
|
| public void test_formalParameters_positional_named() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5097,7 +5099,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| libraryResult.getErrors(),
|
| errEx(ResolverErrorCode.CONSTRUCTOR_WITH_NAME_OF_MEMBER, 3, 3, 5));
|
| }
|
| -
|
| +
|
| /**
|
| * It is a compile-time error if M is not the name of the immediately enclosing class.
|
| * It is a static warning if M.id is not a constructor name.
|
| @@ -5173,7 +5175,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertSame(elementA.lookupConstructor("named"), nameElement);
|
| }
|
| }
|
| -
|
| +
|
| public void test_redirectingFactoryConstructor_cycle() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5245,7 +5247,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(libraryResult.getErrors());
|
| }
|
| -
|
| +
|
| public void test_redirectingFactoryConstructor_shouldBeSubType3() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5259,7 +5261,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(libraryResult.getErrors());
|
| }
|
| -
|
| +
|
| public void test_redirectingFactoryConstructor_notSubType_typeParameterBounds() throws Exception {
|
| AnalyzeLibraryResult libraryResult = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5463,7 +5465,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(ResolverErrorCode.DUPLICATE_IMPLEMENTS_TYPE, 3, 23, 1));
|
| }
|
| -
|
| +
|
| /**
|
| * It is a compile-time error if the superclass of a class C appears in the implements clause of C.
|
| * <p>
|
| @@ -5477,7 +5479,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(ResolverErrorCode.SUPER_CLASS_IN_IMPLEMENTS, 3, 30, 1));
|
| }
|
| -
|
| +
|
| /**
|
| * We should report only "no such type", but not duplicate.
|
| * <p>
|
| @@ -5562,7 +5564,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| result.getErrors(),
|
| errEx(ResolverErrorCode.DUPLICATE_INITIALIZATION, 4, 9, 5));
|
| }
|
| -
|
| +
|
| public void test_getOverridden_method() throws Exception {
|
| analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5614,7 +5616,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertClassMembers(superElements, "field A.foo");
|
| }
|
| }
|
| -
|
| +
|
| public void test_getOverridden_field_withGetter() throws Exception {
|
| analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5667,7 +5669,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| Set<Element> superElements = node.getElement().getOverridden();
|
| assertClassMembers(superElements, "field A.foo");
|
| }
|
| -
|
| +
|
| public void test_getOverridden_getter_withField() throws Exception {
|
| analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5682,7 +5684,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| Set<Element> superElements = node.getElement().getOverridden();
|
| assertClassMembers(superElements, "field A.foo");
|
| }
|
| -
|
| +
|
| public void test_getOverridden_setter_withField() throws Exception {
|
| analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5697,7 +5699,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| Set<Element> superElements = node.getElement().getOverridden();
|
| assertClassMembers(superElements, "field A.setter foo");
|
| }
|
| -
|
| +
|
| public void test_getOverridden_setter_withSetter() throws Exception {
|
| analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5742,7 +5744,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER, 6, 11, 1));
|
| }
|
| -
|
| +
|
| public void test_fieldAccess_notDeclared() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5754,7 +5756,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(TypeErrorCode.CANNOT_BE_RESOLVED, 5, 11, 1));
|
| }
|
| -
|
| +
|
| public void test_fieldAssign_declared_noSetter() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5767,7 +5769,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER, 6, 5, 1));
|
| }
|
| -
|
| +
|
| public void test_fieldAssign_notDeclared() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5792,7 +5794,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER, 5, 13, 1));
|
| }
|
| -
|
| +
|
| public void test_field_unqualifiedAccess_write() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -5855,7 +5857,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| result.getErrors(),
|
| errEx(ResolverErrorCode.CANNOT_RESOLVE_METHOD, 4, 5, 3));
|
| }
|
| -
|
| +
|
| /**
|
| * Developers unfamiliar with Dart frequently write (x/y).toInt() instead of x ~/ y. The editor
|
| * should recognize that pattern.
|
| @@ -5873,7 +5875,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors(), errEx(TypeErrorCode.USE_INTEGER_DIVISION, 5, 10, 15));
|
| }
|
| -
|
| +
|
| /**
|
| * We need to report warning only when arguments are integers.
|
| * <p>
|
| @@ -5923,7 +5925,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * We should resolve sub-type member only if there is only sub-type with such member.
|
| * <p>
|
| @@ -5959,7 +5961,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| // don't report error, because there IS member, we just don't know which one
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=6491
|
| @@ -6027,7 +6029,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertEquals("bbb", element.getName());
|
| }
|
| }
|
| -
|
| +
|
| public void test_resolveRefInComment_ofMethod() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -6052,7 +6054,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertEquals("bar", element.getName());
|
| }
|
| }
|
| -
|
| +
|
| public void test_resolveNewInComment() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -6100,7 +6102,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(ResolverErrorCode.NOT_GENERATIVE_SUPER_CONSTRUCTOR, 11, 3, 1),
|
| errEx(ResolverErrorCode.NOT_GENERATIVE_SUPER_CONSTRUCTOR, 13, 7, 1));
|
| }
|
| -
|
| +
|
| public void test_notGenerativeConstructor_explicitNamed() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -6132,7 +6134,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertErrors(result.getErrors(),
|
| errEx(ResolverErrorCode.INITIALIZER_ONLY_IN_GENERATIVE_CONSTRUCTOR, 4, 9, 5));
|
| }
|
| -
|
| +
|
| public void test_variableReferencesItselfInInitializer() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -6287,7 +6289,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| assertNotNull(expectedElement);
|
| assertSame(nameInInvocation.getElement(), expectedElement);
|
| }
|
| -
|
| +
|
| public void test_mixin_1() throws Exception {
|
| AnalyzeLibraryResult result = analyzeLibrary(
|
| "// filler filler filler filler filler filler filler filler filler filler",
|
| @@ -6303,7 +6305,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| "");
|
| assertErrors(result.getErrors());
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=8022
|
| @@ -6321,7 +6323,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(ResolverErrorCode.ONLY_OBJECT_MIXIN_SUPERCLASS, 4, 25, 1),
|
| errEx(ResolverErrorCode.ONLY_OBJECT_MIXIN_SUPERCLASS, 5, 29, 1));
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=8025
|
| @@ -6338,7 +6340,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(ResolverErrorCode.CANNOT_MIXIN_CLASS_WITH_CONSTRUCTOR, 3, 25, 1),
|
| errEx(ResolverErrorCode.CANNOT_MIXIN_CLASS_WITH_CONSTRUCTOR, 4, 29, 1));
|
| }
|
| -
|
| +
|
| /**
|
| * <p>
|
| * http://code.google.com/p/dart/issues/detail?id=8059
|
| @@ -6355,7 +6357,24 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(ResolverErrorCode.CANNOT_MIXIN_CLASS_WITH_SUPER, 3, 25, 1),
|
| errEx(ResolverErrorCode.CANNOT_MIXIN_CLASS_WITH_SUPER, 4, 29, 1));
|
| }
|
| -
|
| +
|
| + /**
|
| + * <p>
|
| + * http://code.google.com/p/dart/issues/detail?id=8705
|
| + */
|
| + public void test_mixin_useInScope() throws Exception {
|
| + AnalyzeLibraryResult result = analyzeLibrary(
|
| + "// filler filler filler filler filler filler filler filler filler filler",
|
| + "class M { foo() {} }",
|
| + "class A extends Object with M {",
|
| + " bar() {",
|
| + " foo();",
|
| + " }",
|
| + "}",
|
| + "");
|
| + assertErrors(result.getErrors());
|
| + }
|
| +
|
| /**
|
| * 20130122. Currently it is not allowed to have mixin with superclass other than Object.
|
| */
|
| @@ -6408,7 +6427,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| errEx(TypeErrorCode.TYPE_NOT_ASSIGNMENT_COMPATIBLE, 12, 9, 1),
|
| errEx(TypeErrorCode.INTERFACE_HAS_NO_METHOD_NAMED, 15, 5, 7));
|
| }
|
| -
|
| +
|
| /**
|
| * 20130122. Currently it is not allowed to have mixin with superclass other than Object.
|
| */
|
| @@ -6455,7 +6474,7 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| result.getErrors(),
|
| errEx(TypeErrorCode.NOT_A_MEMBER_OF, 13, 11, 2));
|
| }
|
| -
|
| +
|
| /**
|
| * 20130122. Currently it is not allowed to have mixin with superclass other than Object.
|
| */
|
| @@ -6490,5 +6509,5 @@ public class TypeAnalyzerCompilerTest extends CompilerTestCase {
|
| result.getErrors(),
|
| errEx(ResolverErrorCode.CANNOT_MIXIN_CLASS_WITH_MIXINS, 2, 25, 1));
|
| }
|
| -
|
| +
|
| }
|
|
|