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

Side by Side Diff: pkg/analyzer/lib/src/dart/analysis/driver.dart

Issue 2965533002: Use AnalysisDriver.getCachedResult() for 'implemented' notification. (Closed)
Patch Set: Created 3 years, 5 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
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:collection'; 6 import 'dart:collection';
7 import 'dart:typed_data'; 7 import 'dart:typed_data';
8 8
9 import 'package:analyzer/context/context_root.dart'; 9 import 'package:analyzer/context/context_root.dart';
10 import 'package:analyzer/context/declared_variables.dart'; 10 import 'package:analyzer/context/declared_variables.dart';
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 _createFileTracker(); 532 _createFileTracker();
533 _fileTracker.addFiles(addedFiles); 533 _fileTracker.addFiles(addedFiles);
534 } 534 }
535 535
536 @override 536 @override
537 void dispose() { 537 void dispose() {
538 _scheduler.remove(this); 538 _scheduler.remove(this);
539 } 539 }
540 540
541 /** 541 /**
542 * Return the cached [AnalysisResult] for the Dart file with the given [path].
543 * If there is no cached result, return `null`. Usually only results of
544 * priority files are cached.
545 *
546 * The [path] must be absolute and normalized.
547 *
548 * The [path] can be any file - explicitly or implicitly analyzed, or neither.
549 */
550 AnalysisResult getCachedResult(String path) {
551 AnalysisResult result = _priorityResults[path];
552 if (disableChangesAndCacheAllResults) {
553 result ??= _allCachedResults[path];
554 }
555 return result;
556 }
557
558 /**
542 * Return a [Future] that completes with the [ErrorsResult] for the Dart 559 * Return a [Future] that completes with the [ErrorsResult] for the Dart
543 * file with the given [path]. If the file is not a Dart file or cannot 560 * file with the given [path]. If the file is not a Dart file or cannot
544 * be analyzed, the [Future] completes with `null`. 561 * be analyzed, the [Future] completes with `null`.
545 * 562 *
546 * The [path] must be absolute and normalized. 563 * The [path] must be absolute and normalized.
547 * 564 *
548 * This method does not use analysis priorities, and must not be used in 565 * This method does not use analysis priorities, and must not be used in
549 * interactive analysis, such as Analysis Server or its plugins. 566 * interactive analysis, such as Analysis Server or its plugins.
550 */ 567 */
551 Future<ErrorsResult> getErrors(String path) async { 568 Future<ErrorsResult> getErrors(String path) async {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 * of the files previously reported using [changeFile]), prior to the next 676 * of the files previously reported using [changeFile]), prior to the next
660 * time the analysis state transitions to "idle". 677 * time the analysis state transitions to "idle".
661 */ 678 */
662 Future<AnalysisResult> getResult(String path) { 679 Future<AnalysisResult> getResult(String path) {
663 if (!_fsState.hasUri(path)) { 680 if (!_fsState.hasUri(path)) {
664 return new Future.value(); 681 return new Future.value();
665 } 682 }
666 683
667 // Return the cached result. 684 // Return the cached result.
668 { 685 {
669 AnalysisResult result = _priorityResults[path]; 686 AnalysisResult result = getCachedResult(path);
670 if (disableChangesAndCacheAllResults) {
671 result ??= _allCachedResults[path];
672 }
673 if (result != null) { 687 if (result != null) {
674 return new Future.value(result); 688 return new Future.value(result);
675 } 689 }
676 } 690 }
677 691
678 // Schedule analysis. 692 // Schedule analysis.
679 var completer = new Completer<AnalysisResult>(); 693 var completer = new Completer<AnalysisResult>();
680 _requestedFiles 694 _requestedFiles
681 .putIfAbsent(path, () => <Completer<AnalysisResult>>[]) 695 .putIfAbsent(path, () => <Completer<AnalysisResult>>[])
682 .add(completer); 696 .add(completer);
(...skipping 1366 matching lines...) Expand 10 before | Expand all | Expand 10 after
2049 libraryDeclarations.add(new TopLevelDeclarationInSource( 2063 libraryDeclarations.add(new TopLevelDeclarationInSource(
2050 file.source, declaration, isExported)); 2064 file.source, declaration, isExported));
2051 } 2065 }
2052 } 2066 }
2053 } 2067 }
2054 2068
2055 // We're not done yet. 2069 // We're not done yet.
2056 return false; 2070 return false;
2057 } 2071 }
2058 } 2072 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/analysis_abstract.dart ('k') | pkg/analyzer/test/src/dart/analysis/driver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698