Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Unified Diff: pkg/analyzer/test/generated/resolver_test.dart

Side-by-side diff isn't available for this file because of its large size.
Issue 267293006: New analyzer snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | tests/language/language_analyzer2.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/generated/resolver_test.dart
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index a118fb645c2bec1f23457fbbbef6b25a7082d144..2b11e3b9c5e3d3b79967815124d3b1b7f8d9fa6a 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -225,7 +225,7 @@ class AnalysisContextImpl_AnalysisContextFactory_contextWithCore extends Analysi
@override
void set analysisOptions(AnalysisOptions options) {
AnalysisOptions currentOptions = analysisOptions;
- bool needsRecompute = currentOptions.analyzeFunctionBodies != options.analyzeFunctionBodies || currentOptions.generateSdkErrors != options.generateSdkErrors || currentOptions.dart2jsHint != options.dart2jsHint || (currentOptions.hint && !options.hint) || currentOptions.preserveComments != options.preserveComments;
+ bool needsRecompute = currentOptions.analyzeFunctionBodies != options.analyzeFunctionBodies || currentOptions.generateSdkErrors != options.generateSdkErrors || currentOptions.enableDeferredLoading != options.enableDeferredLoading || currentOptions.dart2jsHint != options.dart2jsHint || (currentOptions.hint && !options.hint) || currentOptions.preserveComments != options.preserveComments;
if (needsRecompute) {
JUnitTestCase.fail("Cannot set options that cause the sources to be reanalyzed in a test context");
}
@@ -562,6 +562,31 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_consistentCaseExpressionTypes_dynamic() {
+ // Even though A.S and S have a static type of "dynamic", we should see
+ // that they match 'abc', because they are constant strings.
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " static const S = 'A.S';",
+ "}",
+ "",
+ "const S = 'S';",
+ "",
+ "foo(var p) {",
+ " switch (p) {",
+ " case S:",
+ " break;",
+ " case A.S:",
+ " break;",
+ " case 'abc':",
+ " break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
void test_constConstructorWithNonConstSuper_explicit() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -846,6 +871,44 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_constMapKeyTypeImplementsEquals_dynamic() {
+ // Note: static type of B.a is "dynamic", but actual type of the const
+ // object is A. We need to make sure we examine the actual type when
+ // deciding whether there is a problem with operator==.
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " const A();",
+ " operator ==(other) => false;",
+ "}",
+ "class B {",
+ " static const a = const A();",
+ "}",
+ "main() {",
+ " const {B.a : 0};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
+ verify([source]);
+ }
+
+ void test_constMapKeyTypeImplementsEquals_factory() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A { const factory A() = B; }",
+ "",
+ "class B implements A {",
+ " const B();",
+ "",
+ " operator ==(o) => true;",
+ "}",
+ "",
+ "main() {",
+ " var m = const { const A(): 42 };",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
+ verify([source]);
+ }
+
void test_constMapKeyTypeImplementsEquals_super() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -1872,6 +1935,33 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_inconsistentCaseExpressionTypes_dynamic() {
+ // Even though A.S and S have a static type of "dynamic", we should see
+ // that they fail to match 3, because they are constant strings.
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " static const S = 'A.S';",
+ "}",
+ "",
+ "const S = 'S';",
+ "",
+ "foo(var p) {",
+ " switch (p) {",
+ " case 3:",
+ " break;",
+ " case S:",
+ " break;",
+ " case A.S:",
+ " break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [
+ CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES,
+ CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES]);
+ verify([source]);
+ }
+
void test_inconsistentCaseExpressionTypes_repeated() {
Source source = addSource(EngineTestCase.createSource([
"f(var p) {",
@@ -2103,6 +2193,12 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_invalidAnnotation_useLibraryScope() {
+ Source source = addSource(EngineTestCase.createSource(["@foo", "class A {", " static const foo = null;", "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
+ }
+
void test_invalidConstructorName_notEnclosingClassName_defined() {
Source source = addSource(EngineTestCase.createSource(["class A {", " B() : super();", "}", "class B {}"]));
resolve(source);
@@ -2715,6 +2811,38 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_nonConstCaseExpressionFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main (int p) {",
+ " switch (p) {",
+ " case a.c:",
+ " break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstCaseExpressionFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main (int p) {",
+ " switch (p) {",
+ " case a.c + 1:",
+ " break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
void test_nonConstListElement() {
Source source = addSource(EngineTestCase.createSource(["f(a) {", " return const [a];", "}"]));
resolve(source);
@@ -2722,6 +2850,32 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_nonConstListElementFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const [a.c];",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstListElementFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const [a.c + 1];",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
void test_nonConstMapAsExpressionStatement_begin() {
Source source = addSource(EngineTestCase.createSource(["f() {", " {'a' : 0, 'b' : 1}.length;", "}"]));
resolve(source);
@@ -2743,6 +2897,32 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_nonConstMapKeyFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {a.c : 0};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstMapKeyFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {a.c + 1 : 0};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
void test_nonConstMapValue() {
Source source = addSource(EngineTestCase.createSource(["f(a) {", " return const {'a' : a};", "}"]));
resolve(source);
@@ -2750,6 +2930,32 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_nonConstMapValueFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {'a' : a.c};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstMapValueFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {'a' : a.c + 1};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
void test_nonConstValueInInitializer_binary_notBool_left() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -2836,6 +3042,64 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_nonConstValueInInitializerFromDeferredLibrary_field() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " final int x;",
+ " const A() : x = a.C;",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_field_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " final int x;",
+ " const A() : x = a.C + 1;",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_redirecting() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " const A.named(p);",
+ " const A() : this.named(a.C);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_super() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " const A(p);",
+ "}",
+ "class B extends A {",
+ " const B() : super(a.C);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
void test_nonGenerativeConstructor_explicit() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -3178,6 +3442,23 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_redirectGenerativeToMissingConstructor() {
+ Source source = addSource(EngineTestCase.createSource(["class A {", " A() : this.noSuchConstructor();", "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR]);
+ }
+
+ void test_redirectGenerativeToNonGenerativeConstructor() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " A() : this.x();",
+ " factory A.x() => null;",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR]);
+ verify([source]);
+ }
+
void test_redirectToMissingConstructor_named() {
Source source = addSource(EngineTestCase.createSource([
"class A implements B{",
@@ -3850,6 +4131,10 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_conflictingTypeVariableAndMember_setter);
});
+ _ut.test('test_consistentCaseExpressionTypes_dynamic', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_consistentCaseExpressionTypes_dynamic);
+ });
_ut.test('test_constConstructorWithNonConstSuper_explicit', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_constConstructorWithNonConstSuper_explicit);
@@ -3970,6 +4255,14 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_constMapKeyTypeImplementsEquals_direct);
});
+ _ut.test('test_constMapKeyTypeImplementsEquals_dynamic', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_constMapKeyTypeImplementsEquals_dynamic);
+ });
+ _ut.test('test_constMapKeyTypeImplementsEquals_factory', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_constMapKeyTypeImplementsEquals_factory);
+ });
_ut.test('test_constMapKeyTypeImplementsEquals_super', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_constMapKeyTypeImplementsEquals_super);
@@ -4390,6 +4683,10 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_inconsistentCaseExpressionTypes);
});
+ _ut.test('test_inconsistentCaseExpressionTypes_dynamic', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_inconsistentCaseExpressionTypes_dynamic);
+ });
_ut.test('test_inconsistentCaseExpressionTypes_repeated', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_inconsistentCaseExpressionTypes_repeated);
@@ -4486,6 +4783,10 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_invalidAnnotation_unresolved_prefixedIdentifier);
});
+ _ut.test('test_invalidAnnotation_useLibraryScope', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_invalidAnnotation_useLibraryScope);
+ });
_ut.test('test_invalidConstructorName_notEnclosingClassName_defined', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_invalidConstructorName_notEnclosingClassName_defined);
@@ -4742,10 +5043,26 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_nonConstCaseExpression);
});
+ _ut.test('test_nonConstCaseExpressionFromDeferredLibrary', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstCaseExpressionFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstCaseExpressionFromDeferredLibrary_nested', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstCaseExpressionFromDeferredLibrary_nested);
+ });
_ut.test('test_nonConstListElement', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_nonConstListElement);
});
+ _ut.test('test_nonConstListElementFromDeferredLibrary', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstListElementFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstListElementFromDeferredLibrary_nested', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstListElementFromDeferredLibrary_nested);
+ });
_ut.test('test_nonConstMapAsExpressionStatement_begin', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_nonConstMapAsExpressionStatement_begin);
@@ -4758,10 +5075,42 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_nonConstMapKey);
});
+ _ut.test('test_nonConstMapKeyFromDeferredLibrary', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstMapKeyFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstMapKeyFromDeferredLibrary_nested', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstMapKeyFromDeferredLibrary_nested);
+ });
_ut.test('test_nonConstMapValue', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_nonConstMapValue);
});
+ _ut.test('test_nonConstMapValueFromDeferredLibrary', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstMapValueFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstMapValueFromDeferredLibrary_nested', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstMapValueFromDeferredLibrary_nested);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_field', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_field);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_field_nested', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_field_nested);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_redirecting', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_redirecting);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_super', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_super);
+ });
_ut.test('test_nonConstValueInInitializer_binary_notBool_left', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_notBool_left);
@@ -4954,6 +5303,14 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_tail3);
});
+ _ut.test('test_redirectGenerativeToMissingConstructor', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_redirectGenerativeToMissingConstructor);
+ });
+ _ut.test('test_redirectGenerativeToNonGenerativeConstructor', () {
+ final __test = new CompileTimeErrorCodeTest();
+ runJUnitTest(__test, __test.test_redirectGenerativeToNonGenerativeConstructor);
+ });
_ut.test('test_redirectToMissingConstructor_named', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_redirectToMissingConstructor_named);
@@ -5269,74 +5626,786 @@ class DeclarationMatcherTest extends ResolverTestCase {
"}"]));
}
- void test_methodDeclarationMatches_true_same() {
- String content = EngineTestCase.createSource([
- "class C {",
- " int m(int p) {",
- " return p + p;",
- " }",
- "}"]);
- _assertMethodMatches(true, content, content);
+ void test_methodDeclarationMatches_true_same() {
+ String content = EngineTestCase.createSource([
+ "class C {",
+ " int m(int p) {",
+ " return p + p;",
+ " }",
+ "}"]);
+ _assertMethodMatches(true, content, content);
+ }
+
+ void _assertCompilationUnitMatches(bool expectMatch, String oldContent, String newContent) {
+ Source source = addSource(oldContent);
+ LibraryElement library = resolve(source);
+ CompilationUnit oldUnit = resolveCompilationUnit(source, library);
+ AnalysisContext context = analysisContext;
+ context.setContents(source, newContent);
+ CompilationUnit newUnit = context.parseCompilationUnit(source);
+ DeclarationMatcher matcher = new DeclarationMatcher();
+ JUnitTestCase.assertEquals(expectMatch, matcher.matches(newUnit, oldUnit.element));
+ }
+
+ void _assertMethodMatches(bool expectMatch, String oldContent, String newContent) {
+ Source source = addSource(oldContent);
+ LibraryElement library = resolve(source);
+ CompilationUnit oldUnit = resolveCompilationUnit(source, library);
+ MethodElement element = _getFirstMethod(oldUnit).element as MethodElement;
+ AnalysisContext context = analysisContext;
+ context.setContents(source, newContent);
+ CompilationUnit newUnit = context.parseCompilationUnit(source);
+ MethodDeclaration newMethod = _getFirstMethod(newUnit);
+ DeclarationMatcher matcher = new DeclarationMatcher();
+ JUnitTestCase.assertEquals(expectMatch, matcher.matches(newMethod, element));
+ }
+
+ MethodDeclaration _getFirstMethod(CompilationUnit unit) {
+ ClassDeclaration classNode = unit.declarations[0] as ClassDeclaration;
+ return classNode.members[0] as MethodDeclaration;
+ }
+
+ static dartSuite() {
+ _ut.group('DeclarationMatcherTest', () {
+ _ut.test('test_compilationUnitMatches_false_topLevelVariable', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_compilationUnitMatches_false_topLevelVariable);
+ });
+ _ut.test('test_compilationUnitMatches_true_different', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_compilationUnitMatches_true_different);
+ });
+ _ut.test('test_compilationUnitMatches_true_same', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_compilationUnitMatches_true_same);
+ });
+ _ut.test('test_methodDeclarationMatches_false_localVariable', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_methodDeclarationMatches_false_localVariable);
+ });
+ _ut.test('test_methodDeclarationMatches_false_parameter', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_methodDeclarationMatches_false_parameter);
+ });
+ _ut.test('test_methodDeclarationMatches_true_different', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_methodDeclarationMatches_true_different);
+ });
+ _ut.test('test_methodDeclarationMatches_true_same', () {
+ final __test = new DeclarationMatcherTest();
+ runJUnitTest(__test, __test.test_methodDeclarationMatches_true_same);
+ });
+ });
+ }
+}
+
+class DeferredLoadingTest extends ResolverTestCase {
+ void test_constDeferredClass() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " const A();", "}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main() {",
+ " const a.A();",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.CONST_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_constDeferredClass_namedConstructor() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " const A.b();", "}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main() {",
+ " const a.A.b();",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.CONST_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_constDeferredClass_new_nonTest() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " const A.b();", "}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main() {",
+ " new a.A.b();",
+ "}"]));
+ resolve(source);
+ assertErrors(source, []);
+ verify([source]);
+ }
+
+ void test_constInitializedWithNonConstValueFromDeferredClass() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const V = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "const B = a.V;"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_constInitializedWithNonConstValueFromDeferredClass_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const V = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "const B = a.V + 1;"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_extendsDeferredClass() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class B extends a.A {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_extendsDeferredClass_classTypeAlias() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class M {}",
+ "class C = a.A with M;"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_implementsDeferredClass() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class B implements a.A {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_implementsDeferredClass_classTypeAlias() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class B {}",
+ "class M {}",
+ "class C = B with M implements a.A;"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_importDeferredLibraryWithLoadFunction() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "loadLibrary() {}", "f() {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as lib1;",
+ "main() { lib1.f(); }"]));
+ resolve(source);
+ assertErrors(source, [HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION]);
+ verify([source]);
+ }
+
+ void test_importOfNonLibrary() {
+ Source source = addSource(EngineTestCase.createSource([
+ "library lib;",
+ "import 'part.dart' deferred as p;",
+ "var a = new p.A();"]));
+ addNamedSource("/part.dart", EngineTestCase.createSource(["part of lib;", "class A {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.IMPORT_OF_NON_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_invalidAnnotationFromDeferredLibrary() {
+ // See test_invalidAnnotation_notConstantVariable
+ addNamedSource("/lib1.dart", EngineTestCase.createSource([
+ "library lib1;",
+ "class V { const V(); }",
+ "const v = const V();"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "@a.v main () {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_invalidAnnotationFromDeferredLibrary_constructor() {
+ // See test_invalidAnnotation_notConstantVariable
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class C { const C(); }"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "@a.C() main () {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_invalidAnnotationFromDeferredLibrary_namedConstructor() {
+ // See test_invalidAnnotation_notConstantVariable
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class C { const C.name(); }"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "@a.C.name() main () {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_loadLibraryDefined_nonTest() {
+ addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "foo() => 22;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "import 'lib.dart' deferred as other;",
+ "main() {",
+ " other.loadLibrary().then((_) => other.foo());",
+ "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
+ void test_mixinDeferredClass() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class B extends Object with a.A {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.MIXIN_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_mixinDeferredClass_classTypeAlias() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class B {}",
+ "class C = B with a.A;"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.MIXIN_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_nonConstantDefaultValueFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const V = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f({x : a.V}) {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstantDefaultValueFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const V = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f({x : a.V + 1}) {}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstCaseExpressionFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main (int p) {",
+ " switch (p) {",
+ " case a.c:",
+ " break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstCaseExpressionFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "main (int p) {",
+ " switch (p) {",
+ " case a.c + 1:",
+ " break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstListElementFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const [a.c];",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstListElementFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const [a.c + 1];",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstMapKeyFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {a.c : 0};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstMapKeyFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {a.c + 1 : 0};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstMapValueFromDeferredLibrary() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {'a' : a.c};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstMapValueFromDeferredLibrary_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int c = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f() {",
+ " return const {'a' : a.c + 1};",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_field() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " final int x;",
+ " const A() : x = a.C;",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_field_nested() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " final int x;",
+ " const A() : x = a.C + 1;",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_redirecting() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " const A.named(p);",
+ " const A() : this.named(a.C);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_nonConstValueInInitializerFromDeferredLibrary_super() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const int C = 1;"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class A {",
+ " const A(p);",
+ "}",
+ "class B extends A {",
+ " const B() : super(a.C);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+ verify([source]);
+ }
+
+ void test_sharedDeferredPrefix() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f1() {}"]));
+ addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "f2() {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as lib;",
+ "import 'lib2.dart' as lib;",
+ "main() { lib.f1(); lib.f2(); }"]));
+ resolve(source);
+ assertErrors(source, [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX]);
+ verify([source]);
+ }
+
+ void test_sharedDeferredPrefix_nonTest() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f1() {}"]));
+ addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "f2() {}"]));
+ addNamedSource("/lib3.dart", EngineTestCase.createSource(["library lib3;", "f3() {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as lib1;",
+ "import 'lib2.dart' as lib;",
+ "import 'lib3.dart' as lib;",
+ "main() { lib1.f1(); lib.f2(); lib.f3(); }"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
+ void test_typeAnnotationDeferredClass_fieldFormalParameter() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class C {",
+ " var v;",
+ " C(a.A this.v);",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_typeAnnotationDeferredClass_functionDeclaration_returnType() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "a.A f() { return null; }"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f(a.A g()) {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_typeAnnotationDeferredClass_methodDeclaration_returnType() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class C {",
+ " a.A m() { return null; }",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_typeAnnotationDeferredClass_simpleFormalParameter() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "f(a.A v) {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ void test_typeAnnotationDeferredClass_typeArgumentList() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class C<E> {}",
+ "C<a.A> c;"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
}
- void _assertCompilationUnitMatches(bool expectMatch, String oldContent, String newContent) {
- Source source = addSource(oldContent);
- LibraryElement library = resolve(source);
- CompilationUnit oldUnit = resolveCompilationUnit(source, library);
- AnalysisContext context = analysisContext;
- context.setContents(source, newContent);
- CompilationUnit newUnit = context.parseCompilationUnit(source);
- DeclarationMatcher matcher = new DeclarationMatcher();
- JUnitTestCase.assertEquals(expectMatch, matcher.matches(newUnit, oldUnit.element));
+ void test_typeAnnotationDeferredClass_typeArgumentList2() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class C<E, F> {}",
+ "C<a.A, a.A> c;"]));
+ resolve(source);
+ assertErrors(source, [
+ StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS,
+ StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
}
- void _assertMethodMatches(bool expectMatch, String oldContent, String newContent) {
- Source source = addSource(oldContent);
- LibraryElement library = resolve(source);
- CompilationUnit oldUnit = resolveCompilationUnit(source, library);
- MethodElement element = _getFirstMethod(oldUnit).element as MethodElement;
- AnalysisContext context = analysisContext;
- context.setContents(source, newContent);
- CompilationUnit newUnit = context.parseCompilationUnit(source);
- MethodDeclaration newMethod = _getFirstMethod(newUnit);
- DeclarationMatcher matcher = new DeclarationMatcher();
- JUnitTestCase.assertEquals(expectMatch, matcher.matches(newMethod, element));
+ void test_typeAnnotationDeferredClass_typeParameter_bound() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "class C<E extends a.A> {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
}
- MethodDeclaration _getFirstMethod(CompilationUnit unit) {
- ClassDeclaration classNode = unit.declarations[0] as ClassDeclaration;
- return classNode.members[0] as MethodDeclaration;
+ void test_typeAnnotationDeferredClass_variableDeclarationList() {
+ addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "library root;",
+ "import 'lib1.dart' deferred as a;",
+ "a.A v;"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+ verify([source]);
+ }
+
+ @override
+ void reset() {
+ AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
+ analysisOptions.enableDeferredLoading = true;
+ resetWithOptions(analysisOptions);
}
static dartSuite() {
- _ut.group('DeclarationMatcherTest', () {
- _ut.test('test_compilationUnitMatches_false_topLevelVariable', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_compilationUnitMatches_false_topLevelVariable);
+ _ut.group('DeferredLoadingTest', () {
+ _ut.test('test_constDeferredClass', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_constDeferredClass);
});
- _ut.test('test_compilationUnitMatches_true_different', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_compilationUnitMatches_true_different);
+ _ut.test('test_constDeferredClass_namedConstructor', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_constDeferredClass_namedConstructor);
});
- _ut.test('test_compilationUnitMatches_true_same', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_compilationUnitMatches_true_same);
+ _ut.test('test_constDeferredClass_new_nonTest', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_constDeferredClass_new_nonTest);
});
- _ut.test('test_methodDeclarationMatches_false_localVariable', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_methodDeclarationMatches_false_localVariable);
+ _ut.test('test_constInitializedWithNonConstValueFromDeferredClass', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_constInitializedWithNonConstValueFromDeferredClass);
});
- _ut.test('test_methodDeclarationMatches_false_parameter', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_methodDeclarationMatches_false_parameter);
+ _ut.test('test_constInitializedWithNonConstValueFromDeferredClass_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_constInitializedWithNonConstValueFromDeferredClass_nested);
});
- _ut.test('test_methodDeclarationMatches_true_different', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_methodDeclarationMatches_true_different);
+ _ut.test('test_extendsDeferredClass', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_extendsDeferredClass);
});
- _ut.test('test_methodDeclarationMatches_true_same', () {
- final __test = new DeclarationMatcherTest();
- runJUnitTest(__test, __test.test_methodDeclarationMatches_true_same);
+ _ut.test('test_extendsDeferredClass_classTypeAlias', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_extendsDeferredClass_classTypeAlias);
+ });
+ _ut.test('test_implementsDeferredClass', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_implementsDeferredClass);
+ });
+ _ut.test('test_implementsDeferredClass_classTypeAlias', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_implementsDeferredClass_classTypeAlias);
+ });
+ _ut.test('test_importDeferredLibraryWithLoadFunction', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_importDeferredLibraryWithLoadFunction);
+ });
+ _ut.test('test_importOfNonLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_importOfNonLibrary);
+ });
+ _ut.test('test_invalidAnnotationFromDeferredLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_invalidAnnotationFromDeferredLibrary);
+ });
+ _ut.test('test_invalidAnnotationFromDeferredLibrary_constructor', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_invalidAnnotationFromDeferredLibrary_constructor);
+ });
+ _ut.test('test_invalidAnnotationFromDeferredLibrary_namedConstructor', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_invalidAnnotationFromDeferredLibrary_namedConstructor);
+ });
+ _ut.test('test_loadLibraryDefined_nonTest', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_loadLibraryDefined_nonTest);
+ });
+ _ut.test('test_mixinDeferredClass', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_mixinDeferredClass);
+ });
+ _ut.test('test_mixinDeferredClass_classTypeAlias', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_mixinDeferredClass_classTypeAlias);
+ });
+ _ut.test('test_nonConstCaseExpressionFromDeferredLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstCaseExpressionFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstCaseExpressionFromDeferredLibrary_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstCaseExpressionFromDeferredLibrary_nested);
+ });
+ _ut.test('test_nonConstListElementFromDeferredLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstListElementFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstListElementFromDeferredLibrary_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstListElementFromDeferredLibrary_nested);
+ });
+ _ut.test('test_nonConstMapKeyFromDeferredLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstMapKeyFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstMapKeyFromDeferredLibrary_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstMapKeyFromDeferredLibrary_nested);
+ });
+ _ut.test('test_nonConstMapValueFromDeferredLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstMapValueFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstMapValueFromDeferredLibrary_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstMapValueFromDeferredLibrary_nested);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_field', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_field);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_field_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_field_nested);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_redirecting', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_redirecting);
+ });
+ _ut.test('test_nonConstValueInInitializerFromDeferredLibrary_super', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstValueInInitializerFromDeferredLibrary_super);
+ });
+ _ut.test('test_nonConstantDefaultValueFromDeferredLibrary', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstantDefaultValueFromDeferredLibrary);
+ });
+ _ut.test('test_nonConstantDefaultValueFromDeferredLibrary_nested', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_nonConstantDefaultValueFromDeferredLibrary_nested);
+ });
+ _ut.test('test_sharedDeferredPrefix', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_sharedDeferredPrefix);
+ });
+ _ut.test('test_sharedDeferredPrefix_nonTest', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_sharedDeferredPrefix_nonTest);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_fieldFormalParameter', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_fieldFormalParameter);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_functionDeclaration_returnType', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_functionDeclaration_returnType);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_methodDeclaration_returnType', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_methodDeclaration_returnType);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_simpleFormalParameter', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_simpleFormalParameter);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_typeArgumentList', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_typeArgumentList);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_typeArgumentList2', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_typeArgumentList2);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_typeParameter_bound', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_typeParameter_bound);
+ });
+ _ut.test('test_typeAnnotationDeferredClass_variableDeclarationList', () {
+ final __test = new DeferredLoadingTest();
+ runJUnitTest(__test, __test.test_typeAnnotationDeferredClass_variableDeclarationList);
});
});
}
@@ -9920,6 +10989,33 @@ class NonErrorResolverTest extends ResolverTestCase {
verify([source]);
}
+ void test_caseExpressionTypeImplementsEquals() {
+ Source source = addSource(EngineTestCase.createSource([
+ "print(p) {}",
+ "",
+ "abstract class B {",
+ " final id;",
+ " const B(this.id);",
+ " String toString() => 'C(\$id)';",
+ " /** Equality is identity equality, the id isn't used. */",
+ " bool operator==(Object other);",
+ " }",
+ "",
+ "class C extends B {",
+ " const C(id) : super(id);",
+ "}",
+ "",
+ "void doSwitch(c) {",
+ " switch (c) {",
+ " case const C(0): print('Switch: 0'); break;",
+ " case const C(1): print('Switch: 1'); break;",
+ " }",
+ "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
void test_caseExpressionTypeImplementsEquals_int() {
Source source = addSource(EngineTestCase.createSource([
"f(int i) {",
@@ -10033,6 +11129,33 @@ class NonErrorResolverTest extends ResolverTestCase {
EngineTestCase.assertInstanceOf((obj) => obj is MethodElement, MethodElement, ref.staticElement);
}
+ void test_commentReference_setter() {
+ String code = EngineTestCase.createSource([
+ "class A {",
+ " /// [x] in A",
+ " mA() {}",
+ " set x(value) {}",
+ "}",
+ "class B extends A {",
+ " /// [x] in B",
+ " mB() {}",
+ "}",
+ ""]);
+ Source source = addSource(code);
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ CompilationUnit unit = analysisContext.parseCompilationUnit(source);
+ {
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "x] in A", (node) => node is SimpleIdentifier);
+ EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, PropertyAccessorElement, ref.staticElement);
+ }
+ {
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "x] in B", (node) => node is SimpleIdentifier);
+ EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, PropertyAccessorElement, ref.staticElement);
+ }
+ }
+
void test_concreteClassWithAbstractMember() {
Source source = addSource(EngineTestCase.createSource(["abstract class A {", " m();", "}"]));
resolve(source);
@@ -10263,6 +11386,28 @@ class NonErrorResolverTest extends ResolverTestCase {
verify([source]);
}
+ void test_constMapKeyExpressionTypeImplementsEquals_abstract() {
+ Source source = addSource(EngineTestCase.createSource([
+ "abstract class B {",
+ " final id;",
+ " const B(this.id);",
+ " String toString() => 'C(\$id)';",
+ " /** Equality is identity equality, the id isn't used. */",
+ " bool operator==(Object other);",
+ " }",
+ "",
+ "class C extends B {",
+ " const C(id) : super(id);",
+ "}",
+ "",
+ "Map getMap() {",
+ " return const { const C(0): 'Map: 0' };",
+ "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
void test_constNotInitialized_field() {
Source source = addSource(EngineTestCase.createSource(["class A {", " static const int x = 0;", "}"]));
resolve(source);
@@ -13580,6 +14725,10 @@ class NonErrorResolverTest extends ResolverTestCase {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_caseBlockNotTerminated_lastCase);
});
+ _ut.test('test_caseExpressionTypeImplementsEquals', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals);
+ });
_ut.test('test_caseExpressionTypeImplementsEquals_Object', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals_Object);
@@ -13612,6 +14761,10 @@ class NonErrorResolverTest extends ResolverTestCase {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_commentReference_class);
});
+ _ut.test('test_commentReference_setter', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_commentReference_setter);
+ });
_ut.test('test_concreteClassWithAbstractMember', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_concreteClassWithAbstractMember);
@@ -13684,6 +14837,10 @@ class NonErrorResolverTest extends ResolverTestCase {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_constEval_symbol);
});
+ _ut.test('test_constMapKeyExpressionTypeImplementsEquals_abstract', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_constMapKeyExpressionTypeImplementsEquals_abstract);
+ });
_ut.test('test_constNotInitialized_field', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_constNotInitialized_field);
@@ -21475,6 +22632,13 @@ class StaticWarningCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_assignmentToFunction() {
+ Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", " f = null;", "}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]);
+ verify([source]);
+ }
+
void test_assignmentToMethod() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -23017,6 +24181,18 @@ class StaticWarningCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_notEnoughRequiredArguments_getterReturningFunction() {
+ Source source = addSource(EngineTestCase.createSource([
+ "typedef Getter(self);",
+ "Getter getter = (x) => x;",
+ "main() {",
+ " getter();",
+ "}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
+ verify([source]);
+ }
+
void test_partOfDifferentLibrary() {
Source source = addSource(EngineTestCase.createSource(["library lib;", "part 'part.dart';"]));
addNamedSource("/part.dart", EngineTestCase.createSource(["part of lub;"]));
@@ -23725,6 +24901,10 @@ class StaticWarningCodeTest extends ResolverTestCase {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_assignmentToFinal_topLevelVariable);
});
+ _ut.test('test_assignmentToFunction', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_assignmentToFunction);
+ });
_ut.test('test_assignmentToMethod', () {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_assignmentToMethod);
@@ -24237,6 +25417,10 @@ class StaticWarningCodeTest extends ResolverTestCase {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_notEnoughRequiredArguments_functionExpression);
});
+ _ut.test('test_notEnoughRequiredArguments_getterReturningFunction', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_notEnoughRequiredArguments_getterReturningFunction);
+ });
_ut.test('test_partOfDifferentLibrary', () {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_partOfDifferentLibrary);
@@ -25042,7 +26226,11 @@ class TestTypeProvider implements TypeProvider {
@override
InterfaceType get symbolType {
if (_symbolType == null) {
- _symbolType = ElementFactory.classElement2("Symbol", []).type;
+ ClassElementImpl symbolClass = ElementFactory.classElement2("Symbol", []);
+ ConstructorElementImpl constructor = ElementFactory.constructorElement(symbolClass, null, true, [stringType]);
+ constructor.factory = true;
+ symbolClass.constructors = <ConstructorElement> [constructor];
+ _symbolType = symbolClass.type;
}
return _symbolType;
}
@@ -26772,6 +27960,7 @@ main() {
// ScopeBuilderTest.dartSuite();
// ScopeTest.dartSuite();
// CompileTimeErrorCodeTest.dartSuite();
+// DeferredLoadingTest.dartSuite();
// ErrorResolverTest.dartSuite();
// HintCodeTest.dartSuite();
// MemberMapTest.dartSuite();
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | tests/language/language_analyzer2.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698