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

Unified Diff: pkg/analyzer/test/src/context/context_test.dart

Issue 1131673004: Use WorkManager(s) in AnalysisDriver. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/test/src/context/context_test.dart
diff --git a/pkg/analyzer/test/src/context/context_test.dart b/pkg/analyzer/test/src/context/context_test.dart
index 06041b7887948a3b23dd5a3ef3dbbf4b1949c5d0..674b08499b2163e06962ce7f02f8c33c7ef9c6aa 100644
--- a/pkg/analyzer/test/src/context/context_test.dart
+++ b/pkg/analyzer/test/src/context/context_test.dart
@@ -59,21 +59,6 @@ class AnalysisContextImplTest extends AbstractContextTest {
fail('Should have failed');
}
- void test_applyChanges_overriddenSource() {
- // Note: addSource adds the source to the contentCache.
- Source source = addSource("/test.dart", "library test;");
- context.computeErrors(source);
- while (!context.sourcesNeedingProcessing.isEmpty) {
- context.performAnalysisTask();
- }
- // Adding the source as a changedSource should have no effect since
- // it is already overridden in the content cache.
- ChangeSet changeSet = new ChangeSet();
- changeSet.changedSource(source);
- context.applyChanges(changeSet);
- expect(context.sourcesNeedingProcessing, hasLength(0));
- }
-
Future fail_applyChanges_remove() {
SourcesChangedListener listener = new SourcesChangedListener();
context.onSourcesChanged.listen(listener.onData);
@@ -140,29 +125,6 @@ import 'libB.dart';''';
});
}
- void test_computeErrors_dart_none() {
- Source source = addSource("/lib.dart", "library lib;");
- List<AnalysisError> errors = context.computeErrors(source);
- expect(errors, hasLength(0));
- }
-
- void test_computeErrors_dart_part() {
- Source librarySource =
- addSource("/lib.dart", "library lib; part 'part.dart';");
- Source partSource = addSource("/part.dart", "part of 'lib';");
- context.parseCompilationUnit(librarySource);
- List<AnalysisError> errors = context.computeErrors(partSource);
- expect(errors, isNotNull);
- expect(errors.length > 0, isTrue);
- }
-
- void test_computeErrors_dart_some() {
- Source source = addSource("/lib.dart", "library 'lib';");
- List<AnalysisError> errors = context.computeErrors(source);
- expect(errors, isNotNull);
- expect(errors.length > 0, isTrue);
- }
-
void fail_computeErrors_html_none() {
Source source = addSource("/test.html", "<html></html>");
List<AnalysisError> errors = context.computeErrors(source);
@@ -176,17 +138,6 @@ import 'libB.dart';''';
expect(context.computeHtmlElement(source), same(element));
}
- void test_computeImportedLibraries_none() {
- Source source = addSource("/test.dart", "library test;");
- expect(context.computeImportedLibraries(source), hasLength(0));
- }
-
- void test_computeImportedLibraries_some() {
- Source source = addSource(
- "/test.dart", "library test; import 'lib1.dart'; import 'lib2.dart';");
- expect(context.computeImportedLibraries(source), hasLength(2));
- }
-
void fail_computeResolvableCompilationUnit_dart_exception() {
TestSource source = _addSourceWithException("/test.dart");
try {
@@ -217,6 +168,30 @@ import 'libB.dart';''';
expect(resolvedUnit, same(parsedUnit));
}
+ Future fail_computeResolvedCompilationUnitAsync_afterDispose() {
+ Source source = addSource("/lib.dart", "library lib;");
+ // Complete all pending analysis tasks and flush the AST so that it won't
+ // be available immediately.
+ _performPendingAnalysisTasks();
+ _flushAst(source);
+ // Dispose of the context.
+ context.dispose();
+ // Any attempt to start an asynchronous computation should return a future
+ // which completes with error.
+ CancelableFuture<CompilationUnit> future =
+ context.computeResolvedCompilationUnitAsync(source, source);
+ bool completed = false;
+ future.then((CompilationUnit unit) {
+ fail('Future should have completed with error');
+ }, onError: (error) {
+ expect(error, new isInstanceOf<AnalysisNotScheduledError>());
+ completed = true;
+ });
+ return pumpEventQueue().then((_) {
+ expect(completed, isTrue);
+ });
+ }
+
Future fail_computeResolvedCompilationUnitAsync_dispose() {
Source source = addSource("/lib.dart", "library lib;");
// Complete all pending analysis tasks and flush the AST so that it won't
@@ -268,76 +243,6 @@ import 'libB.dart';''';
fail("Implement this");
}
- void test_getElement_constructor_named() {
- Source source = addSource("/lib.dart", r'''
-class A {
- A.named() {}
-}''');
- _analyzeAll_assertFinished();
- LibraryElement library = context.computeLibraryElement(source);
- ClassElement classA = _findClass(library.definingCompilationUnit, "A");
- ConstructorElement constructor = classA.constructors[0];
- ElementLocation location = constructor.location;
- Element element = context.getElement(location);
- expect(element, same(constructor));
- }
-
- void test_getElement_constructor_unnamed() {
- Source source = addSource("/lib.dart", r'''
-class A {
- A() {}
-}''');
- _analyzeAll_assertFinished();
- LibraryElement library = context.computeLibraryElement(source);
- ClassElement classA = _findClass(library.definingCompilationUnit, "A");
- ConstructorElement constructor = classA.constructors[0];
- ElementLocation location = constructor.location;
- Element element = context.getElement(location);
- expect(element, same(constructor));
- }
-
- void test_getElement_enum() {
- Source source = addSource('/test.dart', 'enum MyEnum {A, B, C}');
- _analyzeAll_assertFinished();
- LibraryElement library = context.computeLibraryElement(source);
- ClassElement myEnum = library.definingCompilationUnit.getEnum('MyEnum');
- ElementLocation location = myEnum.location;
- Element element = context.getElement(location);
- expect(element, same(myEnum));
- }
-
- void test_getErrors_dart_none() {
- Source source = addSource("/lib.dart", "library lib;");
- var errorInfo = context.getErrors(source);
- expect(errorInfo, isNotNull);
- List<AnalysisError> errors = errorInfo.errors;
- expect(errors, hasLength(0));
- context.computeErrors(source);
- errors = errorInfo.errors;
- expect(errors, hasLength(0));
- }
-
- void test_getErrors_dart_some() {
- Source source = addSource("/lib.dart", "library 'lib';");
- var errorInfo = context.getErrors(source);
- expect(errorInfo, isNotNull);
- List<AnalysisError> errors = errorInfo.errors;
- expect(errors, hasLength(0));
- errors = context.computeErrors(source);
- expect(errors, hasLength(1));
- }
-
- void test_getErrors_html_none() {
- Source source = addSource("/test.html", "<html></html>");
- AnalysisErrorInfo errorInfo = context.getErrors(source);
- expect(errorInfo, isNotNull);
- List<AnalysisError> errors = errorInfo.errors;
- expect(errors, hasLength(0));
- context.computeErrors(source);
- errors = errorInfo.errors;
- expect(errors, hasLength(0));
- }
-
void fail_getErrors_html_some() {
Source source = addSource("/test.html", r'''
<html><head>
@@ -418,15 +323,6 @@ class A {
expect(result[0], librarySource);
}
- void test_getResolvedCompilationUnit_library() {
- Source source = addSource("/lib.dart", "library libb;");
- LibraryElement library = context.computeLibraryElement(source);
- context.computeErrors(source); // Force the resolved unit to be built.
- expect(context.getResolvedCompilationUnit(source, library), isNotNull);
- context.setContents(source, "library lib;");
- expect(context.getResolvedCompilationUnit(source, library), isNull);
- }
-
void fail_getResolvedHtmlUnit() {
Source source = addSource("/test.html", "<html></html>");
expect(context.getResolvedHtmlUnit(source), isNull);
@@ -487,165 +383,6 @@ part of lib;
expect(librariesWithPart, unorderedEquals([libSource]));
}
- void fail_performAnalysisTask_changeLibraryContents() {
- Source libSource =
- addSource("/test.dart", "library lib; part 'test-part.dart';");
- Source partSource = addSource("/test-part.dart", "part of lib;");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 1");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 1");
- // update and analyze #1
- context.setContents(libSource, "library lib;");
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
- reason: "library changed 2");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 2");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 2");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part resolved 2");
- // update and analyze #2
- context.setContents(libSource, "library lib; part 'test-part.dart';");
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
- reason: "library changed 3");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 3");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 2");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 3");
- }
-
- void fail_performAnalysisTask_changeLibraryThenPartContents() {
- Source libSource =
- addSource("/test.dart", "library lib; part 'test-part.dart';");
- Source partSource = addSource("/test-part.dart", "part of lib;");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 1");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 1");
- // update and analyze #1
- context.setContents(libSource, "library lib;");
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
- reason: "library changed 2");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 2");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 2");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part resolved 2");
- // update and analyze #2
- context.setContents(partSource, "part of lib; // 1");
- // Assert that changing the part's content does not effect the library
- // now that it is no longer part of that library
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library changed 3");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 3");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 3");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part resolved 3");
- }
-
- void test_performAnalysisTask_changePartContents_makeItAPart() {
- Source libSource = addSource("/lib.dart", r'''
-library lib;
-part 'part.dart';
-void f(x) {}''');
- Source partSource = addSource("/part.dart", "void g() { f(null); }");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 1");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 1");
- // update and analyze
- context.setContents(partSource, r'''
-part of lib;
-void g() { f(null); }''');
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
- reason: "library changed 2");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 2");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 2");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 2");
- expect(context.getErrors(libSource).errors, hasLength(0));
- expect(context.getErrors(partSource).errors, hasLength(0));
- }
-
- /**
- * https://code.google.com/p/dart/issues/detail?id=12424
- */
- void test_performAnalysisTask_changePartContents_makeItNotPart() {
- Source libSource = addSource("/lib.dart", r'''
-library lib;
-part 'part.dart';
-void f(x) {}''');
- Source partSource = addSource("/part.dart", r'''
-part of lib;
-void g() { f(null); }''');
- _analyzeAll_assertFinished();
- expect(context.getErrors(libSource).errors, hasLength(0));
- expect(context.getErrors(partSource).errors, hasLength(0));
- // Remove 'part' directive, which should make "f(null)" an error.
- context.setContents(partSource, r'''
-//part of lib;
-void g() { f(null); }''');
- _analyzeAll_assertFinished();
- expect(context.getErrors(libSource).errors.length != 0, isTrue);
- }
-
- void test_performAnalysisTask_changePartContents_noSemanticChanges() {
- Source libSource =
- addSource("/test.dart", "library lib; part 'test-part.dart';");
- Source partSource = addSource("/test-part.dart", "part of lib;");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 1");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 1");
- // update and analyze #1
- context.setContents(partSource, "part of lib; // 1");
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
- reason: "library changed 2");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 2");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 2");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 2");
- // update and analyze #2
- context.setContents(partSource, "part of lib; // 12");
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
- reason: "library changed 3");
- expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
- reason: "part changed 3");
- _analyzeAll_assertFinished();
- expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
- reason: "library resolved 3");
- expect(
- context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
- reason: "part resolved 3");
- }
-
void fail_performAnalysisTask_getContentException_dart() {
// add source that throw an exception on "get content"
Source source = new _Source_getContent_throwException('test.dart');
@@ -1089,6 +826,21 @@ int b = aa;''';
});
}
+ void test_applyChanges_overriddenSource() {
+ // Note: addSource adds the source to the contentCache.
+ Source source = addSource("/test.dart", "library test;");
+ context.computeErrors(source);
+ while (!context.sourcesNeedingProcessing.isEmpty) {
+ context.performAnalysisTask();
+ }
+ // Adding the source as a changedSource should have no effect since
+ // it is already overridden in the content cache.
+ ChangeSet changeSet = new ChangeSet();
+ changeSet.changedSource(source);
+ context.applyChanges(changeSet);
+ expect(context.sourcesNeedingProcessing, hasLength(0));
+ }
+
void test_computeDocumentationComment_block() {
String comment = "/** Comment */";
Source source = addSource("/test.dart", """
@@ -1136,6 +888,29 @@ class A {}""");
expect(actual, "/// line 1\n/// line 2\n/// line 3");
}
+ void test_computeErrors_dart_none() {
+ Source source = addSource("/lib.dart", "library lib;");
+ List<AnalysisError> errors = context.computeErrors(source);
+ expect(errors, hasLength(0));
+ }
+
+ void test_computeErrors_dart_part() {
+ Source librarySource =
+ addSource("/lib.dart", "library lib; part 'part.dart';");
+ Source partSource = addSource("/part.dart", "part of 'lib';");
+ context.parseCompilationUnit(librarySource);
+ List<AnalysisError> errors = context.computeErrors(partSource);
+ expect(errors, isNotNull);
+ expect(errors.length > 0, isTrue);
+ }
+
+ void test_computeErrors_dart_some() {
+ Source source = addSource("/lib.dart", "library 'lib';");
+ List<AnalysisError> errors = context.computeErrors(source);
+ expect(errors, isNotNull);
+ expect(errors.length > 0, isTrue);
+ }
+
void test_computeExportedLibraries_none() {
Source source = addSource("/test.dart", "library test;");
expect(context.computeExportedLibraries(source), hasLength(0));
@@ -1154,6 +929,17 @@ class A {}""");
expect(context.computeHtmlElement(source), isNull);
}
+ void test_computeImportedLibraries_none() {
+ Source source = addSource("/test.dart", "library test;");
+ expect(context.computeImportedLibraries(source), hasLength(0));
+ }
+
+ void test_computeImportedLibraries_some() {
+ Source source = addSource(
+ "/test.dart", "library test; import 'lib1.dart'; import 'lib2.dart';");
+ expect(context.computeImportedLibraries(source), hasLength(2));
+ }
+
void test_computeKindOf_html() {
Source source = addSource("/test.html", "");
expect(context.computeKindOf(source), same(SourceKind.HTML));
@@ -1180,50 +966,26 @@ class A {}""");
expect(element, isNotNull);
}
- void test_computeLineInfo_dart() {
- Source source = addSource("/test.dart", r'''
-library lib;
-
-main() {}''');
- LineInfo info = context.computeLineInfo(source);
- expect(info, isNotNull);
- }
-
- void test_computeLineInfo_html() {
- Source source = addSource("/test.html", r'''
-<html>
- <body>
- <h1>A</h1>
- </body>
-</html>''');
- LineInfo info = context.computeLineInfo(source);
- expect(info, isNotNull);
- }
-
- Future fail_computeResolvedCompilationUnitAsync_afterDispose() {
- Source source = addSource("/lib.dart", "library lib;");
- // Complete all pending analysis tasks and flush the AST so that it won't
- // be available immediately.
- _performPendingAnalysisTasks();
- _flushAst(source);
- // Dispose of the context.
- context.dispose();
- // Any attempt to start an asynchronous computation should return a future
- // which completes with error.
- CancelableFuture<CompilationUnit> future =
- context.computeResolvedCompilationUnitAsync(source, source);
- bool completed = false;
- future.then((CompilationUnit unit) {
- fail('Future should have completed with error');
- }, onError: (error) {
- expect(error, new isInstanceOf<AnalysisNotScheduledError>());
- completed = true;
- });
- return pumpEventQueue().then((_) {
- expect(completed, isTrue);
- });
- }
-
+ void test_computeLineInfo_dart() {
+ Source source = addSource("/test.dart", r'''
+library lib;
+
+main() {}''');
+ LineInfo info = context.computeLineInfo(source);
+ expect(info, isNotNull);
+ }
+
+ void test_computeLineInfo_html() {
+ Source source = addSource("/test.html", r'''
+<html>
+ <body>
+ <h1>A</h1>
+ </body>
+</html>''');
+ LineInfo info = context.computeLineInfo(source);
+ expect(info, isNotNull);
+ }
+
void test_dispose() {
expect(context.isDisposed, isFalse);
context.dispose();
@@ -1295,6 +1057,76 @@ main() {}''');
expect(element, same(classObject));
}
+ void test_getElement_constructor_named() {
+ Source source = addSource("/lib.dart", r'''
+class A {
+ A.named() {}
+}''');
+ _analyzeAll_assertFinished();
+ LibraryElement library = context.computeLibraryElement(source);
+ ClassElement classA = _findClass(library.definingCompilationUnit, "A");
+ ConstructorElement constructor = classA.constructors[0];
+ ElementLocation location = constructor.location;
+ Element element = context.getElement(location);
+ expect(element, same(constructor));
+ }
+
+ void test_getElement_constructor_unnamed() {
+ Source source = addSource("/lib.dart", r'''
+class A {
+ A() {}
+}''');
+ _analyzeAll_assertFinished();
+ LibraryElement library = context.computeLibraryElement(source);
+ ClassElement classA = _findClass(library.definingCompilationUnit, "A");
+ ConstructorElement constructor = classA.constructors[0];
+ ElementLocation location = constructor.location;
+ Element element = context.getElement(location);
+ expect(element, same(constructor));
+ }
+
+ void test_getElement_enum() {
+ Source source = addSource('/test.dart', 'enum MyEnum {A, B, C}');
+ _analyzeAll_assertFinished();
+ LibraryElement library = context.computeLibraryElement(source);
+ ClassElement myEnum = library.definingCompilationUnit.getEnum('MyEnum');
+ ElementLocation location = myEnum.location;
+ Element element = context.getElement(location);
+ expect(element, same(myEnum));
+ }
+
+ void test_getErrors_dart_none() {
+ Source source = addSource("/lib.dart", "library lib;");
+ var errorInfo = context.getErrors(source);
+ expect(errorInfo, isNotNull);
+ List<AnalysisError> errors = errorInfo.errors;
+ expect(errors, hasLength(0));
+ context.computeErrors(source);
+ errors = errorInfo.errors;
+ expect(errors, hasLength(0));
+ }
+
+ void test_getErrors_dart_some() {
+ Source source = addSource("/lib.dart", "library 'lib';");
+ var errorInfo = context.getErrors(source);
+ expect(errorInfo, isNotNull);
+ List<AnalysisError> errors = errorInfo.errors;
+ expect(errors, hasLength(0));
+ errors = context.computeErrors(source);
+ expect(errors, hasLength(1));
+ }
+
+ void test_getErrors_html_none() {
+ Source source = addSource("/test.html", "<html></html>");
+ AnalysisErrorInfo errorInfo = context.getErrors(source);
+ expect(errorInfo, isNotNull);
+ List<AnalysisError> errors = errorInfo.errors;
+ expect(errors, hasLength(0));
+ context.computeErrors(source);
+ errors = errorInfo.errors;
+ expect(errors, hasLength(0));
+ }
+
void test_getHtmlElement_dart() {
Source source = addSource("/test.dart", "");
expect(context.getHtmlElement(source), isNull);
@@ -1526,6 +1358,15 @@ main() {}''');
(obj) => obj is ClassElement, ClassElement, namespace.get("A"));
}
+ void test_getResolvedCompilationUnit_library() {
+ Source source = addSource("/lib.dart", "library libb;");
+ LibraryElement library = context.computeLibraryElement(source);
+ context.computeErrors(source); // Force the resolved unit to be built.
+ expect(context.getResolvedCompilationUnit(source, library), isNotNull);
+ context.setContents(source, "library lib;");
+ expect(context.getResolvedCompilationUnit(source, library), isNull);
+ }
+
void test_getResolvedCompilationUnit_library_null() {
Source source = addSource("/lib.dart", "library lib;");
expect(context.getResolvedCompilationUnit(source, null), isNull);
@@ -1658,6 +1499,165 @@ main() {}''');
}
}
+ void test_performAnalysisTask_changeLibraryContents() {
+ Source libSource =
+ addSource("/test.dart", "library lib; part 'test-part.dart';");
+ Source partSource = addSource("/test-part.dart", "part of lib;");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 1");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 1");
+ // update and analyze #1
+ context.setContents(libSource, "library lib;");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ reason: "library changed 2");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 2");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 2");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part resolved 2");
+ // update and analyze #2
+ context.setContents(libSource, "library lib; part 'test-part.dart';");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ reason: "library changed 3");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 3");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 2");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 3");
+ }
+
+ void test_performAnalysisTask_changeLibraryThenPartContents() {
+ Source libSource =
+ addSource("/test.dart", "library lib; part 'test-part.dart';");
+ Source partSource = addSource("/test-part.dart", "part of lib;");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 1");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 1");
+ // update and analyze #1
+ context.setContents(libSource, "library lib;");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ reason: "library changed 2");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 2");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 2");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part resolved 2");
+ // update and analyze #2
+ context.setContents(partSource, "part of lib; // 1");
+ // Assert that changing the part's content does not effect the library
+ // now that it is no longer part of that library
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library changed 3");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 3");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 3");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part resolved 3");
+ }
+
+ void test_performAnalysisTask_changePartContents_makeItAPart() {
+ Source libSource = addSource("/lib.dart", r'''
+library lib;
+part 'part.dart';
+void f(x) {}''');
+ Source partSource = addSource("/part.dart", "void g() { f(null); }");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 1");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 1");
+ // update and analyze
+ context.setContents(partSource, r'''
+part of lib;
+void g() { f(null); }''');
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ reason: "library changed 2");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 2");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 2");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 2");
+ expect(context.getErrors(libSource).errors, hasLength(0));
+ expect(context.getErrors(partSource).errors, hasLength(0));
+ }
+
+ /**
+ * https://code.google.com/p/dart/issues/detail?id=12424
+ */
+ void test_performAnalysisTask_changePartContents_makeItNotPart() {
+ Source libSource = addSource("/lib.dart", r'''
+library lib;
+part 'part.dart';
+void f(x) {}''');
+ Source partSource = addSource("/part.dart", r'''
+part of lib;
+void g() { f(null); }''');
+ _analyzeAll_assertFinished();
+ expect(context.getErrors(libSource).errors, hasLength(0));
+ expect(context.getErrors(partSource).errors, hasLength(0));
+ // Remove 'part' directive, which should make "f(null)" an error.
+ context.setContents(partSource, r'''
+//part of lib;
+void g() { f(null); }''');
+ _analyzeAll_assertFinished();
+ expect(context.getErrors(libSource).errors.length != 0, isTrue);
+ }
+
+ void test_performAnalysisTask_changePartContents_noSemanticChanges() {
+ Source libSource =
+ addSource("/test.dart", "library lib; part 'test-part.dart';");
+ Source partSource = addSource("/test-part.dart", "part of lib;");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 1");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 1");
+ // update and analyze #1
+ context.setContents(partSource, "part of lib; // 1");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ reason: "library changed 2");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 2");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 2");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 2");
+ // update and analyze #2
+ context.setContents(partSource, "part of lib; // 12");
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
+ reason: "library changed 3");
+ expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
+ reason: "part changed 3");
+ _analyzeAll_assertFinished();
+ expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
+ reason: "library resolved 3");
+ expect(
+ context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
+ reason: "part resolved 3");
+ }
+
// void test_resolveCompilationUnit_sourceChangeDuringResolution() {
// _context = new _AnalysisContext_sourceChangeDuringResolution();
// AnalysisContextFactory.initContextWithCore(_context);

Powered by Google App Engine
This is Rietveld 408576698