| 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));
 | 
|    }
 | 
| -  
 | 
| +
 | 
|  }
 | 
| 
 |