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

Side by Side Diff: pkg/analyzer/test/src/context/context_test.dart

Issue 1181223002: Fix for computeResolvedCompilationUnitAsync(). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « pkg/analyzer/lib/src/context/context.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.src.context.context_test; 5 library test.src.context.context_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/src/cancelable_future.dart'; 9 import 'package:analyzer/src/cancelable_future.dart';
10 import 'package:analyzer/src/context/cache.dart'; 10 import 'package:analyzer/src/context/cache.dart';
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 // Disposing of the context should cause all pending futures to complete 233 // Disposing of the context should cause all pending futures to complete
234 // with AnalysisNotScheduled, so that no clients are left hanging. 234 // with AnalysisNotScheduled, so that no clients are left hanging.
235 context.dispose(); 235 context.dispose();
236 expect(context.pendingFutureSources_forTesting, isEmpty); 236 expect(context.pendingFutureSources_forTesting, isEmpty);
237 return pumpEventQueue().then((_) { 237 return pumpEventQueue().then((_) {
238 expect(completed, isTrue); 238 expect(completed, isTrue);
239 expect(context.pendingFutureSources_forTesting, isEmpty); 239 expect(context.pendingFutureSources_forTesting, isEmpty);
240 }); 240 });
241 } 241 }
242 242
243 Future fail_computeResolvedCompilationUnitAsync_unrelatedLibrary() { 243 Future test_computeResolvedCompilationUnitAsync_noCacheEntry() {
244 Source librarySource = addSource("/lib.dart", "library lib;"); 244 Source librarySource = addSource("/lib.dart", "library lib;");
245 Source partSource = addSource("/part.dart", "part of foo;"); 245 Source partSource = addSource("/part.dart", "part of foo;");
246 bool completed = false; 246 bool completed = false;
247 context 247 context
248 .computeResolvedCompilationUnitAsync(partSource, librarySource) 248 .computeResolvedCompilationUnitAsync(partSource, librarySource)
249 .then((_) { 249 .then((CompilationUnit unit) {
250 fail('Expected resolution to fail'); 250 expect(unit, isNotNull);
251 }, onError: (e) {
252 expect(e, new isInstanceOf<AnalysisNotScheduledError>());
253 completed = true; 251 completed = true;
254 }); 252 });
255 return pumpEventQueue().then((_) { 253 return pumpEventQueue().then((_) {
256 expect(completed, isFalse); 254 expect(completed, isFalse);
257 _performPendingAnalysisTasks(); 255 _performPendingAnalysisTasks();
258 }).then((_) => pumpEventQueue()).then((_) { 256 }).then((_) => pumpEventQueue()).then((_) {
259 expect(completed, isTrue); 257 expect(completed, isTrue);
260 }); 258 });
261 } 259 }
262 260
(...skipping 1687 matching lines...) Expand 10 before | Expand all | Expand 10 after
1950 AnalysisDelta delta = new AnalysisDelta(); 1948 AnalysisDelta delta = new AnalysisDelta();
1951 delta.setAnalysisLevel(source, AnalysisLevel.ALL); 1949 delta.setAnalysisLevel(source, AnalysisLevel.ALL);
1952 context.applyAnalysisDelta(delta); 1950 context.applyAnalysisDelta(delta);
1953 expect(context.sourcesNeedingProcessing, contains(source)); 1951 expect(context.sourcesNeedingProcessing, contains(source));
1954 delta = new AnalysisDelta(); 1952 delta = new AnalysisDelta();
1955 delta.setAnalysisLevel(source, AnalysisLevel.NONE); 1953 delta.setAnalysisLevel(source, AnalysisLevel.NONE);
1956 context.applyAnalysisDelta(delta); 1954 context.applyAnalysisDelta(delta);
1957 expect(context.sourcesNeedingProcessing.contains(source), isFalse); 1955 expect(context.sourcesNeedingProcessing.contains(source), isFalse);
1958 } 1956 }
1959 1957
1960 Future xtest_computeResolvedCompilationUnitAsync() { 1958 Future test_computeResolvedCompilationUnitAsync() {
1961 Source source = addSource("/lib.dart", "library lib;"); 1959 Source source = addSource("/lib.dart", "library lib;");
1962 // Complete all pending analysis tasks and flush the AST so that it won't 1960 // Complete all pending analysis tasks and flush the AST so that it won't
1963 // be available immediately. 1961 // be available immediately.
1964 _performPendingAnalysisTasks(); 1962 _performPendingAnalysisTasks();
1965 _flushAst(source); 1963 _flushAst(source);
1966 bool completed = false; 1964 bool completed = false;
1967 context 1965 context
1968 .computeResolvedCompilationUnitAsync(source, source) 1966 .computeResolvedCompilationUnitAsync(source, source)
1969 .then((CompilationUnit unit) { 1967 .then((CompilationUnit unit) {
1970 expect(unit, isNotNull); 1968 expect(unit, isNotNull);
1971 completed = true; 1969 completed = true;
1972 }); 1970 });
1973 return pumpEventQueue().then((_) { 1971 return pumpEventQueue().then((_) {
1974 expect(completed, isFalse); 1972 expect(completed, isFalse);
1975 _performPendingAnalysisTasks(); 1973 _performPendingAnalysisTasks();
1976 }).then((_) => pumpEventQueue()).then((_) { 1974 }).then((_) => pumpEventQueue()).then((_) {
1977 expect(completed, isTrue); 1975 expect(completed, isTrue);
1978 }); 1976 });
1979 } 1977 }
1980 1978
1981 Future xtest_computeResolvedCompilationUnitAsync_cancel() { 1979 Future test_computeResolvedCompilationUnitAsync_cancel() {
1982 Source source = addSource("/lib.dart", "library lib;"); 1980 Source source = addSource("/lib.dart", "library lib;");
1983 // Complete all pending analysis tasks and flush the AST so that it won't 1981 // Complete all pending analysis tasks and flush the AST so that it won't
1984 // be available immediately. 1982 // be available immediately.
1985 _performPendingAnalysisTasks(); 1983 _performPendingAnalysisTasks();
1986 _flushAst(source); 1984 _flushAst(source);
1987 CancelableFuture<CompilationUnit> future = 1985 CancelableFuture<CompilationUnit> future =
1988 context.computeResolvedCompilationUnitAsync(source, source); 1986 context.computeResolvedCompilationUnitAsync(source, source);
1989 bool completed = false; 1987 bool completed = false;
1990 future.then((CompilationUnit unit) { 1988 future.then((CompilationUnit unit) {
1991 fail('Future should have been canceled'); 1989 fail('Future should have been canceled');
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
2077 ClassElement _findClass(CompilationUnitElement unit, String className) { 2075 ClassElement _findClass(CompilationUnitElement unit, String className) {
2078 for (ClassElement classElement in unit.types) { 2076 for (ClassElement classElement in unit.types) {
2079 if (classElement.displayName == className) { 2077 if (classElement.displayName == className) {
2080 return classElement; 2078 return classElement;
2081 } 2079 }
2082 } 2080 }
2083 return null; 2081 return null;
2084 } 2082 }
2085 2083
2086 void _flushAst(Source source) { 2084 void _flushAst(Source source) {
2087 CacheEntry entry = context 2085 CacheEntry entry =
2088 .getReadableSourceEntryOrNull(new LibrarySpecificUnit(source, source)); 2086 context.getCacheEntry(new LibrarySpecificUnit(source, source));
2089 entry.setState(RESOLVED_UNIT, CacheState.FLUSHED); 2087 entry.setState(RESOLVED_UNIT, CacheState.FLUSHED);
2090 } 2088 }
2091 2089
2092 IncrementalAnalysisCache _getIncrementalAnalysisCache( 2090 IncrementalAnalysisCache _getIncrementalAnalysisCache(
2093 AnalysisContextImpl context2) { 2091 AnalysisContextImpl context2) {
2094 return context2.test_incrementalAnalysisCache; 2092 return context2.test_incrementalAnalysisCache;
2095 } 2093 }
2096 2094
2097 List<Source> _getPriorityOrder(AnalysisContextImpl context2) { 2095 List<Source> _getPriorityOrder(AnalysisContextImpl context2) {
2098 return context2.test_priorityOrder; 2096 return context2.test_priorityOrder;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2171 : super(name, pathos.toUri(name), UriKind.FILE_URI); 2169 : super(name, pathos.toUri(name), UriKind.FILE_URI);
2172 2170
2173 @override 2171 @override
2174 TimestampedData<String> get contents { 2172 TimestampedData<String> get contents {
2175 throw 'Read error'; 2173 throw 'Read error';
2176 } 2174 }
2177 2175
2178 @override 2176 @override
2179 bool exists() => true; 2177 bool exists() => true;
2180 } 2178 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/context/context.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698