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

Unified Diff: pkg/analyzer_plugin/lib/plugin/plugin.dart

Issue 3008433002: Unify lots of copied code in one utility method (Closed)
Patch Set: Created 3 years, 4 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 | « pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_plugin/lib/plugin/plugin.dart
diff --git a/pkg/analyzer_plugin/lib/plugin/plugin.dart b/pkg/analyzer_plugin/lib/plugin/plugin.dart
index 1d90d68a2199c5ff12f892e087ad5afe3000888f..da7b7e9a9c5f982e9a8b0576dd443bae0e778932 100644
--- a/pkg/analyzer_plugin/lib/plugin/plugin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/plugin.dart
@@ -4,11 +4,12 @@
import 'dart:async';
+import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/driver.dart'
- show AnalysisDriverGeneric, AnalysisDriverScheduler;
+ show AnalysisDriver, AnalysisDriverGeneric, AnalysisDriverScheduler;
import 'package:analyzer/src/dart/analysis/file_byte_store.dart';
import 'package:analyzer/src/dart/analysis/file_state.dart';
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
@@ -202,7 +203,32 @@ abstract class ServerPlugin {
}
/**
+ * Return the result of analyzing the file with the given [path].
+ *
+ * Throw a [RequestFailure] is the file cannot be analyzed or if the driver
+ * associated with the file is not an [AnalysisDriver].
+ */
+ Future<ResolveResult> getResolveResult(String path) async {
+ AnalysisDriverGeneric driver = driverForPath(path);
+ if (driver is! AnalysisDriver) {
+ // Return an error from the request.
+ throw new RequestFailure(
+ RequestErrorFactory.pluginError('Failed to analyze $path', null));
+ }
+ ResolveResult result = await (driver as AnalysisDriver).getResult(path);
+ ResultState state = result.state;
+ if (state != ResultState.VALID) {
+ // Return an error from the request.
+ throw new RequestFailure(
+ RequestErrorFactory.pluginError('Failed to analyze $path', null));
+ }
+ return result;
+ }
+
+ /**
* Handle an 'analysis.getNavigation' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<AnalysisGetNavigationResult> handleAnalysisGetNavigation(
AnalysisGetNavigationParams params) async {
@@ -212,6 +238,8 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.handleWatchEvents' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<AnalysisHandleWatchEventsResult> handleAnalysisHandleWatchEvents(
AnalysisHandleWatchEventsParams parameters) async {
@@ -236,6 +264,8 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.setContextRoots' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<AnalysisSetContextRootsResult> handleAnalysisSetContextRoots(
AnalysisSetContextRootsParams parameters) async {
@@ -265,6 +295,8 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.setPriorityFiles' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<AnalysisSetPriorityFilesResult> handleAnalysisSetPriorityFiles(
AnalysisSetPriorityFilesParams parameters) async {
@@ -289,6 +321,8 @@ abstract class ServerPlugin {
* Handle an 'analysis.setSubscriptions' request. Most subclasses should not
* override this method, but should instead use the [subscriptionManager] to
* access the list of subscriptions for any given file.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<AnalysisSetSubscriptionsResult> handleAnalysisSetSubscriptions(
AnalysisSetSubscriptionsParams parameters) async {
@@ -303,6 +337,8 @@ abstract class ServerPlugin {
* Handle an 'analysis.updateContent' request. Most subclasses should not
* override this method, but should instead use the [contentCache] to access
* the current content of overlaid files.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<AnalysisUpdateContentResult> handleAnalysisUpdateContent(
AnalysisUpdateContentParams parameters) async {
@@ -336,6 +372,8 @@ abstract class ServerPlugin {
/**
* Handle a 'completion.getSuggestions' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<CompletionGetSuggestionsResult> handleCompletionGetSuggestions(
CompletionGetSuggestionsParams parameters) async =>
@@ -344,6 +382,8 @@ abstract class ServerPlugin {
/**
* Handle an 'edit.getAssists' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<EditGetAssistsResult> handleEditGetAssists(
EditGetAssistsParams parameters) async =>
@@ -353,6 +393,8 @@ abstract class ServerPlugin {
* Handle an 'edit.getAvailableRefactorings' request. Subclasses that override
* this method in order to participate in refactorings must also override the
* method [handleEditGetRefactoring].
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<EditGetAvailableRefactoringsResult> handleEditGetAvailableRefactorings(
EditGetAvailableRefactoringsParams parameters) async =>
@@ -360,6 +402,8 @@ abstract class ServerPlugin {
/**
* Handle an 'edit.getFixes' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<EditGetFixesResult> handleEditGetFixes(
EditGetFixesParams parameters) async =>
@@ -367,6 +411,8 @@ abstract class ServerPlugin {
/**
* Handle an 'edit.getRefactoring' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<EditGetRefactoringResult> handleEditGetRefactoring(
EditGetRefactoringParams parameters) async =>
@@ -374,6 +420,8 @@ abstract class ServerPlugin {
/**
* Handle a 'kythe.getKytheEntries' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<KytheGetKytheEntriesResult> handleKytheGetKytheEntries(
KytheGetKytheEntriesParams parameters) async =>
@@ -383,6 +431,8 @@ abstract class ServerPlugin {
* Handle a 'plugin.shutdown' request. Subclasses can override this method to
* perform any required clean-up, but cannot prevent the plugin from shutting
* down.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<PluginShutdownResult> handlePluginShutdown(
PluginShutdownParams parameters) async =>
@@ -390,6 +440,8 @@ abstract class ServerPlugin {
/**
* Handle a 'plugin.versionCheck' request.
+ *
+ * Throw a [RequestFailure] if the request could not be handled.
*/
Future<PluginVersionCheckResult> handlePluginVersionCheck(
PluginVersionCheckParams parameters) async {
« no previous file with comments | « pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698