| 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 5cc1dadff801aec076b914d29356181e1cd5d9fd..0270b273feaa026bfc24a120f4c48bc9e7e953cf 100644
|
| --- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart
|
| +++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
|
| @@ -7,10 +7,10 @@ library operation.analysis;
|
| import 'package:analysis_server/src/analysis_server.dart';
|
| import 'package:analysis_server/src/computer/computer_highlights.dart';
|
| import 'package:analysis_server/src/computer/computer_highlights2.dart';
|
| -import 'package:analysis_server/src/computer/computer_occurrences.dart';
|
| import 'package:analysis_server/src/computer/computer_outline.dart';
|
| import 'package:analysis_server/src/computer/computer_overrides.dart';
|
| import 'package:analysis_server/src/domains/analysis/navigation.dart';
|
| +import 'package:analysis_server/src/domains/analysis/occurrences.dart';
|
| import 'package:analysis_server/src/operation/operation.dart';
|
| import 'package:analysis_server/src/protocol_server.dart' as protocol;
|
| import 'package:analysis_server/src/services/dependencies/library_dependencies.dart';
|
| @@ -82,8 +82,8 @@ void scheduleNotificationOperations(
|
| }
|
| if (server.hasAnalysisSubscription(
|
| protocol.AnalysisService.OCCURRENCES, file)) {
|
| - server.scheduleOperation(
|
| - new _DartOccurrencesOperation(context, file, resolvedDartUnit));
|
| + Source source = resolvedDartUnit.element.source;
|
| + server.scheduleOperation(new OccurrencesOperation(context, source));
|
| }
|
| if (server.hasAnalysisSubscription(
|
| protocol.AnalysisService.OVERRIDES, file)) {
|
| @@ -179,10 +179,13 @@ void sendAnalysisNotificationNavigation(
|
| }
|
|
|
| void sendAnalysisNotificationOccurrences(
|
| - AnalysisServer server, String file, CompilationUnit dartUnit) {
|
| + AnalysisServer server, AnalysisContext context, Source source) {
|
| _sendNotification(server, () {
|
| - var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute();
|
| - var params = new protocol.AnalysisOccurrencesParams(file, occurrences);
|
| + OccurrencesCollectorImpl collector =
|
| + computeOccurrences(server, context, source);
|
| + String file = source.fullName;
|
| + var params =
|
| + new protocol.AnalysisOccurrencesParams(file, collector.allOccurrences);
|
| server.sendNotification(params.toNotification());
|
| });
|
| }
|
| @@ -235,16 +238,34 @@ class NavigationOperation extends _NotificationOperation
|
| : super(context, source);
|
|
|
| @override
|
| + bool merge(ServerOperation other) {
|
| + return other is NavigationOperation &&
|
| + other.context == context &&
|
| + other.source == source;
|
| + }
|
| +
|
| + @override
|
| void perform(AnalysisServer server) {
|
| sendAnalysisNotificationNavigation(server, context, source);
|
| }
|
| +}
|
| +
|
| +class OccurrencesOperation extends _NotificationOperation
|
| + implements MergeableOperation {
|
| + OccurrencesOperation(AnalysisContext context, Source source)
|
| + : super(context, source);
|
|
|
| @override
|
| bool merge(ServerOperation other) {
|
| - return other is NavigationOperation &&
|
| + return other is OccurrencesOperation &&
|
| other.context == context &&
|
| other.source == source;
|
| }
|
| +
|
| + @override
|
| + void perform(AnalysisServer server) {
|
| + sendAnalysisNotificationOccurrences(server, context, source);
|
| + }
|
| }
|
|
|
| /**
|
| @@ -410,17 +431,6 @@ abstract class _DartNotificationOperation extends _SingleFileOperation {
|
| }
|
| }
|
|
|
| -class _DartOccurrencesOperation extends _DartNotificationOperation {
|
| - _DartOccurrencesOperation(
|
| - AnalysisContext context, String file, CompilationUnit unit)
|
| - : super(context, file, unit);
|
| -
|
| - @override
|
| - void perform(AnalysisServer server) {
|
| - sendAnalysisNotificationOccurrences(server, file, unit);
|
| - }
|
| -}
|
| -
|
| class _DartOutlineOperation extends _DartNotificationOperation {
|
| final LineInfo lineInfo;
|
|
|
|
|