Index: pkg/analysis_server/lib/src/plugin/server_plugin.dart |
diff --git a/pkg/analysis_server/lib/src/plugin/server_plugin.dart b/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
index c1deee025ca7b1e2d584112b507b2efb17860282..14b8c33e5b78a3ffaa33e1792a1f3a88d2508b99 100644 |
--- a/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
+++ b/pkg/analysis_server/lib/src/plugin/server_plugin.dart |
@@ -6,7 +6,8 @@ library analysis_server.src.plugin.server_plugin; |
import 'package:analysis_server/analysis/analysis_domain.dart'; |
import 'package:analysis_server/analysis/index/index_core.dart'; |
-import 'package:analysis_server/analysis/navigation/navigation_core.dart'; |
+import 'package:analysis_server/analysis/navigation_core.dart'; |
+import 'package:analysis_server/analysis/occurrences_core.dart'; |
import 'package:analysis_server/completion/completion_core.dart'; |
import 'package:analysis_server/edit/assist/assist_core.dart'; |
import 'package:analysis_server/edit/fix/fix_core.dart'; |
@@ -14,12 +15,14 @@ import 'package:analysis_server/plugin/analyzed_files.dart'; |
import 'package:analysis_server/plugin/assist.dart'; |
import 'package:analysis_server/plugin/fix.dart'; |
import 'package:analysis_server/plugin/navigation.dart'; |
+import 'package:analysis_server/plugin/occurrences.dart'; |
import 'package:analysis_server/src/analysis_server.dart'; |
import 'package:analysis_server/src/domain_analysis.dart'; |
import 'package:analysis_server/src/domain_completion.dart'; |
import 'package:analysis_server/src/domain_execution.dart'; |
import 'package:analysis_server/src/domain_server.dart'; |
import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; |
+import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart'; |
import 'package:analysis_server/src/edit/edit_domain.dart'; |
import 'package:analysis_server/src/protocol.dart'; |
import 'package:analysis_server/src/search/search_domain.dart'; |
@@ -86,6 +89,13 @@ class ServerPlugin implements Plugin { |
/** |
* The simple identifier of the extension point that allows plugins to |
+ * register element occurrences. |
+ */ |
+ static const String OCCURRENCES_CONTRIBUTOR_EXTENSION_POINT = |
+ 'occurrencesContributor'; |
+ |
+ /** |
+ * The simple identifier of the extension point that allows plugins to |
* register analysis result listeners. |
*/ |
static const String SET_ANALISYS_DOMAIN_EXTENSION_POINT = 'setAnalysisDomain'; |
@@ -130,11 +140,18 @@ class ServerPlugin implements Plugin { |
ExtensionPoint indexContributorExtensionPoint; |
/** |
- * The extension point that allows plugins to register navigation contributors. |
+ * The extension point that allows plugins to register navigation |
+ * contributors. |
*/ |
ExtensionPoint navigationContributorExtensionPoint; |
/** |
+ * The extension point that allows plugins to register occurrences |
+ * contributors. |
+ */ |
+ ExtensionPoint occurrencesContributorExtensionPoint; |
+ |
+ /** |
* The extension point that allows plugins to get access to the `analysis` |
* domain. |
*/ |
@@ -187,6 +204,13 @@ class ServerPlugin implements Plugin { |
navigationContributorExtensionPoint.extensions; |
/** |
+ * Return a list containing all of the occurrences contributors that were |
+ * contributed. |
+ */ |
+ List<OccurrencesContributor> get occurrencesContributors => |
+ occurrencesContributorExtensionPoint.extensions; |
+ |
+ /** |
* Return a list containing all of the receivers of the `analysis` domain |
* instance. |
*/ |
@@ -231,6 +255,9 @@ class ServerPlugin implements Plugin { |
navigationContributorExtensionPoint = registerExtensionPoint( |
NAVIGATION_CONTRIBUTOR_EXTENSION_POINT, |
_validateNavigationContributorExtension); |
+ occurrencesContributorExtensionPoint = registerExtensionPoint( |
+ OCCURRENCES_CONTRIBUTOR_EXTENSION_POINT, |
+ _validateOccurrencesContributorExtension); |
} |
@override |
@@ -253,10 +280,12 @@ class ServerPlugin implements Plugin { |
// TODO(brianwilkerson) Register the completion contributors. |
// registerExtension(COMPLETION_CONTRIBUTOR_EXTENSION_POINT_ID, ???); |
// |
- // Register navigation contributors. |
+ // Register analysis contributors. |
// |
registerExtension(NAVIGATION_CONTRIBUTOR_EXTENSION_POINT_ID, |
new DartNavigationComputer()); |
+ registerExtension(OCCURRENCES_CONTRIBUTOR_EXTENSION_POINT_ID, |
+ new DartOccurrencesComputer()); |
// |
// Register domains. |
// |
@@ -369,6 +398,18 @@ class ServerPlugin implements Plugin { |
/** |
* Validate the given extension by throwing an [ExtensionError] if it is not a |
+ * valid occurrences contributor. |
+ */ |
+ void _validateOccurrencesContributorExtension(Object extension) { |
+ if (extension is! OccurrencesContributor) { |
+ String id = occurrencesContributorExtensionPoint.uniqueIdentifier; |
+ throw new ExtensionError( |
+ 'Extensions to $id must be an OccurrencesContributor'); |
+ } |
+ } |
+ |
+ /** |
+ * Validate the given extension by throwing an [ExtensionError] if it is not a |
* valid analysis domain receiver. |
*/ |
void _validateSetAnalysisDomainFunction(Object extension) { |