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

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

Issue 1307143004: Make navigation notification operation Source based, without Dart knowledge. (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
Index: pkg/analysis_server/lib/src/operation/operation_analysis.dart
diff --git a/pkg/analysis_server/lib/src/operation/operation_analysis.dart b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
index f18ad32139ce226dada6fb92319c8ffa74e2f190..e7ba700b93b8f56cdf9428eb9a6fd90191b10ee0 100644
--- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart
+++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
@@ -77,8 +77,8 @@ void scheduleNotificationOperations(
}
if (server.hasAnalysisSubscription(
protocol.AnalysisService.NAVIGATION, file)) {
- server.scheduleOperation(
- new _DartNavigationOperation(context, file, resolvedDartUnit));
+ Source source = resolvedDartUnit.element.source;
+ server.scheduleOperation(new NavigationOperation(context, source));
}
if (server.hasAnalysisSubscription(
protocol.AnalysisService.OCCURRENCES, file)) {
@@ -229,6 +229,16 @@ void _sendNotification(AnalysisServer server, f()) {
});
}
+class NavigationOperation extends _NotificationOperation {
+ NavigationOperation(AnalysisContext context, Source source)
+ : super(context, source);
+
+ @override
+ void perform(AnalysisServer server) {
+ sendAnalysisNotificationNavigation(server, context, source);
+ }
+}
+
/**
* Instances of [PerformAnalysisOperation] perform a single analysis task.
*/
@@ -380,18 +390,6 @@ class _DartIndexOperation extends _SingleFileOperation {
}
}
-class _DartNavigationOperation extends _DartNotificationOperation {
- _DartNavigationOperation(
- AnalysisContext context, String file, CompilationUnit unit)
- : super(context, file, unit);
-
- @override
- void perform(AnalysisServer server) {
- Source source = unit.element.source;
- sendAnalysisNotificationNavigation(server, context, source);
- }
-}
-
abstract class _DartNotificationOperation extends _SingleFileOperation {
final CompilationUnit unit;
@@ -476,6 +474,22 @@ class _NotificationErrorsOperation extends _SingleFileOperation {
}
}
+abstract class _NotificationOperation extends SourceSensitiveOperation {
+ final Source source;
+
+ _NotificationOperation(AnalysisContext context, this.source) : super(context);
+
+ @override
+ ServerOperationPriority get priority {
+ return ServerOperationPriority.ANALYSIS_NOTIFICATION;
+ }
+
+ @override
+ bool shouldBeDiscardedOnSourceChange(Source source) {
+ return source == this.source;
+ }
+}
+
abstract class _SingleFileOperation extends SourceSensitiveOperation {
final String file;
« no previous file with comments | « pkg/analysis_server/lib/src/domain_analysis.dart ('k') | pkg/analysis_server/test/plugin/set_analysis_domain_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698