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

Unified Diff: pkg/analysis_server/lib/src/analysis_server.dart

Issue 1368793003: The 'analysis.implemented' notification implementation. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/constants.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/analysis_server.dart
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index c8108b88b6089f19a6bc3b9ce164a978db7b5686..964ece2d88f33f99008abaac2260111cb15e5fb9 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -450,6 +450,26 @@ class AnalysisServer {
return folderMap.values;
}
+ CompilationUnitElement getCompilationUnitElement(String file) {
+ ContextSourcePair pair = getContextSourcePair(file);
+ if (pair == null) {
+ return null;
+ }
+ // prepare AnalysisContext and Source
+ AnalysisContext context = pair.context;
+ Source unitSource = pair.source;
+ if (context == null || unitSource == null) {
+ return null;
+ }
+ // get element in the first library
+ List<Source> librarySources = context.getLibrariesContaining(unitSource);
+ if (!librarySources.isNotEmpty) {
+ return null;
+ }
+ Source librarySource = librarySources.first;
+ return context.getCompilationUnitElement(unitSource, librarySource);
+ }
+
/**
* Return the [AnalysisContext] that contains the given [path].
* Return `null` if no context contains the [path].
@@ -564,6 +584,23 @@ class AnalysisServer {
return elements;
}
+// TODO(brianwilkerson) Add the following method after 'prioritySources' has
+// been added to InternalAnalysisContext.
+// /**
+// * Return a list containing the full names of all of the sources that are
+// * priority sources.
+// */
+// List<String> getPriorityFiles() {
+// List<String> priorityFiles = new List<String>();
+// folderMap.values.forEach((ContextDirectory directory) {
+// InternalAnalysisContext context = directory.context;
+// context.prioritySources.forEach((Source source) {
+// priorityFiles.add(source.fullName);
+// });
+// });
+// return priorityFiles;
+// }
+
/**
* Return an analysis error info containing the array of all of the errors and
* the line info associated with [file].
@@ -590,23 +627,6 @@ class AnalysisServer {
return context.getErrors(source);
}
-// TODO(brianwilkerson) Add the following method after 'prioritySources' has
-// been added to InternalAnalysisContext.
-// /**
-// * Return a list containing the full names of all of the sources that are
-// * priority sources.
-// */
-// List<String> getPriorityFiles() {
-// List<String> priorityFiles = new List<String>();
-// folderMap.values.forEach((ContextDirectory directory) {
-// InternalAnalysisContext context = directory.context;
-// context.prioritySources.forEach((Source source) {
-// priorityFiles.add(source.fullName);
-// });
-// });
-// return priorityFiles;
-// }
-
/**
* Returns resolved [AstNode]s at the given [offset] of the given [file].
*
@@ -790,6 +810,7 @@ class AnalysisServer {
sendAnalysisNotificationAnalyzedFiles(this);
}
sendStatusNotification(null);
+ _scheduleAnalysisImplementedNotification();
if (_onAnalysisCompleteCompleter != null) {
_onAnalysisCompleteCompleter.complete();
_onAnalysisCompleteCompleter = null;
@@ -993,6 +1014,11 @@ class AnalysisServer {
});
// remember new subscriptions
this.analysisServices = subscriptions;
+ // special case for implemented elements
+ if (analysisServices.containsKey(AnalysisService.IMPLEMENTED) &&
+ isAnalysisComplete()) {
+ _scheduleAnalysisImplementedNotification();
+ }
}
/**
@@ -1282,6 +1308,13 @@ class AnalysisServer {
});
}
+ _scheduleAnalysisImplementedNotification() async {
+ Set<String> files = analysisServices[AnalysisService.IMPLEMENTED];
+ if (files != null) {
+ scheduleImplementedNotification(this, files);
+ }
+ }
+
/**
* Schedules [performOperation] exection.
*/
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/constants.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698