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

Unified Diff: pkg/analysis_server/lib/src/services/search/search_engine_internal.dart

Issue 2672973002: Replace computeNode() with AstProvider in search. (Closed)
Patch Set: Created 3 years, 11 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/analysis_server/lib/src/services/search/search_engine_internal.dart
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
index 63a6996d8005ffebaad0e3af360f6ade528d3935..78fbb0f1b4536a5244a4ca35c30b7b8e2c8b0cb7 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
@@ -13,6 +13,7 @@ import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/visitor.dart';
+import 'package:analyzer/src/dart/element/ast_provider.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
@@ -22,12 +23,18 @@ import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer/src/summary/idl.dart';
/**
+ * The type of a function that returns the [AstProvider] managing the [file].
+ */
+typedef AstProvider GetAstProvider(String file);
Brian Wilkerson 2017/02/03 14:43:47 Is this necessary? It seems like it's just as perf
scheglov 2017/02/03 18:31:36 AstProvider is bound to a single AnalysisDriver or
Brian Wilkerson 2017/02/03 18:38:25 That makes sense. It would be good to add that to
+
+/**
* A [SearchEngine] implementation.
*/
class SearchEngineImpl implements SearchEngine {
final Index _index;
+ final GetAstProvider _getAstProvider;
- SearchEngineImpl(this._index);
+ SearchEngineImpl(this._index, this._getAstProvider);
@override
Future<Set<ClassElement>> searchAllSubtypes(ClassElement type) async {
@@ -254,7 +261,8 @@ class SearchEngineImpl implements SearchEngine {
Future<List<SearchMatch>> _searchReferences_Local(
Element element, bool isRootNode(AstNode n)) async {
_LocalReferencesVisitor visitor = new _LocalReferencesVisitor(element);
- AstNode node = element.computeNode();
+ AstProvider astProvider = _getAstProvider(element.source.fullName);
+ AstNode node = await astProvider.getResolvedNodeForElement(element);
AstNode enclosingNode = node?.getAncestor(isRootNode);
enclosingNode?.accept(visitor);
return visitor.matches;

Powered by Google App Engine
This is Rietveld 408576698