| 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;
|
|
|
|
|