| Index: pkg/analyzer/test/generated/engine_test.dart
|
| diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart
|
| index 2424e2dea2ac21fc327e6b63d9a81f8fde66c80e..9b68e79c8c8eb63422e3034842a670f96690ad8a 100644
|
| --- a/pkg/analyzer/test/generated/engine_test.dart
|
| +++ b/pkg/analyzer/test/generated/engine_test.dart
|
| @@ -669,6 +669,137 @@ main() {}''');
|
| expect(resolvedUnit, same(parsedUnit));
|
| }
|
|
|
| + Future test_computeResolvedCompilationUnitAsync() {
|
| + _context = AnalysisContextFactory.contextWithCore();
|
| + _sourceFactory = _context.sourceFactory;
|
| + 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();
|
| + DartEntry dartEntry = _context.getReadableSourceEntryOrNull(source);
|
| + dartEntry.flushAstStructures();
|
| + bool completed = false;
|
| + _context.computeResolvedCompilationUnitAsync(
|
| + source,
|
| + source).then((CompilationUnit unit) {
|
| + expect(unit, isNotNull);
|
| + completed = true;
|
| + });
|
| + return pumpEventQueue().then((_) {
|
| + expect(completed, isFalse);
|
| + _performPendingAnalysisTasks();
|
| + }).then((_) => pumpEventQueue()).then((_) {
|
| + expect(completed, isTrue);
|
| + });
|
| + }
|
| +
|
| + Future test_computeResolvedCompilationUnitAsync_afterDispose() {
|
| + _context = AnalysisContextFactory.contextWithCore();
|
| + _sourceFactory = _context.sourceFactory;
|
| + 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();
|
| + DartEntry dartEntry = _context.getReadableSourceEntryOrNull(source);
|
| + dartEntry.flushAstStructures();
|
| + // 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 test_computeResolvedCompilationUnitAsync_cancel() {
|
| + _context = AnalysisContextFactory.contextWithCore();
|
| + _sourceFactory = _context.sourceFactory;
|
| + 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();
|
| + DartEntry dartEntry = _context.getReadableSourceEntryOrNull(source);
|
| + dartEntry.flushAstStructures();
|
| + CancelableFuture<CompilationUnit> future =
|
| + _context.computeResolvedCompilationUnitAsync(source, source);
|
| + bool completed = false;
|
| + future.then((CompilationUnit unit) {
|
| + fail('Future should have been canceled');
|
| + }, onError: (error) {
|
| + expect(error, new isInstanceOf<FutureCanceledError>());
|
| + completed = true;
|
| + });
|
| + expect(completed, isFalse);
|
| + expect(_context.pendingFutureSources_forTesting, isNotEmpty);
|
| + future.cancel();
|
| + expect(_context.pendingFutureSources_forTesting, isEmpty);
|
| + return pumpEventQueue().then((_) {
|
| + expect(completed, isTrue);
|
| + expect(_context.pendingFutureSources_forTesting, isEmpty);
|
| + });
|
| + }
|
| +
|
| + Future test_computeResolvedCompilationUnitAsync_dispose() {
|
| + _context = AnalysisContextFactory.contextWithCore();
|
| + _sourceFactory = _context.sourceFactory;
|
| + 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();
|
| + DartEntry dartEntry = _context.getReadableSourceEntryOrNull(source);
|
| + dartEntry.flushAstStructures();
|
| + 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;
|
| + });
|
| + expect(completed, isFalse);
|
| + expect(_context.pendingFutureSources_forTesting, isNotEmpty);
|
| + // Disposing of the context should cause all pending futures to complete
|
| + // with AnalysisNotScheduled, so that no clients are left hanging.
|
| + _context.dispose();
|
| + expect(_context.pendingFutureSources_forTesting, isEmpty);
|
| + return pumpEventQueue().then((_) {
|
| + expect(completed, isTrue);
|
| + expect(_context.pendingFutureSources_forTesting, isEmpty);
|
| + });
|
| + }
|
| +
|
| + Future test_computeResolvedCompilationUnitAsync_unrelatedLibrary() {
|
| + _context = AnalysisContextFactory.contextWithCore();
|
| + _sourceFactory = _context.sourceFactory;
|
| + Source librarySource = _addSource("/lib.dart", "library lib;");
|
| + Source partSource = _addSource("/part.dart", "part of foo;");
|
| + bool completed = false;
|
| + _context.computeResolvedCompilationUnitAsync(
|
| + partSource,
|
| + librarySource).then((_) {
|
| + fail('Expected resolution to fail');
|
| + }, onError: (e) {
|
| + expect(e, new isInstanceOf<AnalysisNotScheduledError>());
|
| + completed = true;
|
| + });
|
| + return pumpEventQueue().then((_) {
|
| + expect(completed, isFalse);
|
| + _performPendingAnalysisTasks();
|
| + }).then((_) => pumpEventQueue()).then((_) {
|
| + expect(completed, isTrue);
|
| + });
|
| + }
|
| +
|
| void test_dispose() {
|
| expect(_context.isDisposed, isFalse);
|
| _context.dispose();
|
| @@ -1129,80 +1260,6 @@ main() {}''');
|
| expect(_context.getResolvedCompilationUnit2(source, source), isNull);
|
| }
|
|
|
| - Future test_getResolvedCompilationUnitFuture() {
|
| - _context = AnalysisContextFactory.contextWithCore();
|
| - _sourceFactory = _context.sourceFactory;
|
| - 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();
|
| - DartEntry dartEntry = _context.getReadableSourceEntryOrNull(source);
|
| - dartEntry.flushAstStructures();
|
| - bool completed = false;
|
| - _context.computeResolvedCompilationUnitAsync(
|
| - source,
|
| - source).then((CompilationUnit unit) {
|
| - expect(unit, isNotNull);
|
| - completed = true;
|
| - });
|
| - return pumpEventQueue().then((_) {
|
| - expect(completed, isFalse);
|
| - _performPendingAnalysisTasks();
|
| - }).then((_) => pumpEventQueue()).then((_) {
|
| - expect(completed, isTrue);
|
| - });
|
| - }
|
| -
|
| - Future test_getResolvedCompilationUnitFuture_cancel() {
|
| - _context = AnalysisContextFactory.contextWithCore();
|
| - _sourceFactory = _context.sourceFactory;
|
| - 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();
|
| - DartEntry dartEntry = _context.getReadableSourceEntryOrNull(source);
|
| - dartEntry.flushAstStructures();
|
| - CancelableFuture<CompilationUnit> future =
|
| - _context.computeResolvedCompilationUnitAsync(source, source);
|
| - bool completed = false;
|
| - future.then((CompilationUnit unit) {
|
| - fail('Future should have been canceled');
|
| - }, onError: (error) {
|
| - expect(error, new isInstanceOf<FutureCanceledError>());
|
| - completed = true;
|
| - });
|
| - expect(completed, isFalse);
|
| - expect(_context.pendingFutureSources_forTesting, isNotEmpty);
|
| - future.cancel();
|
| - expect(_context.pendingFutureSources_forTesting, isEmpty);
|
| - return pumpEventQueue().then((_) {
|
| - expect(completed, isTrue);
|
| - expect(_context.pendingFutureSources_forTesting, isEmpty);
|
| - });
|
| - }
|
| -
|
| - Future test_getResolvedCompilationUnitFuture_unrelatedLibrary() {
|
| - _context = AnalysisContextFactory.contextWithCore();
|
| - _sourceFactory = _context.sourceFactory;
|
| - Source librarySource = _addSource("/lib.dart", "library lib;");
|
| - Source partSource = _addSource("/part.dart", "part of foo;");
|
| - bool completed = false;
|
| - _context.computeResolvedCompilationUnitAsync(
|
| - partSource,
|
| - librarySource).then((_) {
|
| - fail('Expected resolution to fail');
|
| - }, onError: (e) {
|
| - expect(e, new isInstanceOf<AnalysisNotScheduledError>());
|
| - completed = true;
|
| - });
|
| - return pumpEventQueue().then((_) {
|
| - expect(completed, isFalse);
|
| - _performPendingAnalysisTasks();
|
| - }).then((_) => pumpEventQueue()).then((_) {
|
| - expect(completed, isTrue);
|
| - });
|
| - }
|
| -
|
| void test_getResolvedHtmlUnit() {
|
| _context = AnalysisContextFactory.contextWithCore();
|
| _sourceFactory = _context.sourceFactory;
|
|
|