| 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 a5f3fa1b0d70cdd1577deaf5e494f875eb04df68..b1cef681ff61978ba7b4f72d9143eb4b7d4f42c9 100644
|
| --- a/pkg/analyzer_plugin/lib/plugin/plugin.dart
|
| +++ b/pkg/analyzer_plugin/lib/plugin/plugin.dart
|
| @@ -2,6 +2,8 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| +import 'dart:async';
|
| +
|
| import 'package:analyzer/file_system/file_system.dart';
|
| import 'package:analyzer/file_system/physical_file_system.dart';
|
| import 'package:analyzer/src/dart/analysis/driver.dart'
|
| @@ -179,8 +181,8 @@ abstract class ServerPlugin {
|
| /**
|
| * Handle an 'analysis.handleWatchEvents' request.
|
| */
|
| - AnalysisHandleWatchEventsResult handleAnalysisHandleWatchEvents(
|
| - AnalysisHandleWatchEventsParams parameters) {
|
| + Future<AnalysisHandleWatchEventsResult> handleAnalysisHandleWatchEvents(
|
| + AnalysisHandleWatchEventsParams parameters) async {
|
| for (WatchEvent event in parameters.events) {
|
| switch (event.type) {
|
| case WatchEventType.ADD:
|
| @@ -203,9 +205,9 @@ abstract class ServerPlugin {
|
| /**
|
| * Handle an 'analysis.reanalyze' request.
|
| */
|
| - AnalysisReanalyzeResult handleAnalysisReanalyze(
|
| - AnalysisReanalyzeParams parameters) {
|
| - var rootPaths = parameters.roots;
|
| + Future<AnalysisReanalyzeResult> handleAnalysisReanalyze(
|
| + AnalysisReanalyzeParams parameters) async {
|
| + List<String> rootPaths = parameters.roots;
|
| if (rootPaths == null) {
|
| //
|
| // Reanalyze everything.
|
| @@ -236,15 +238,16 @@ abstract class ServerPlugin {
|
| /**
|
| * Handle an 'analysis.setContextBuilderOptions' request.
|
| */
|
| - AnalysisSetContextBuilderOptionsResult handleAnalysisSetContextBuilderOptions(
|
| - AnalysisSetContextBuilderOptionsParams parameters) =>
|
| - null;
|
| + Future<AnalysisSetContextBuilderOptionsResult>
|
| + handleAnalysisSetContextBuilderOptions(
|
| + AnalysisSetContextBuilderOptionsParams parameters) async =>
|
| + null;
|
|
|
| /**
|
| * Handle an 'analysis.setContextRoots' request.
|
| */
|
| - AnalysisSetContextRootsResult handleAnalysisSetContextRoots(
|
| - AnalysisSetContextRootsParams parameters) {
|
| + Future<AnalysisSetContextRootsResult> handleAnalysisSetContextRoots(
|
| + AnalysisSetContextRootsParams parameters) async {
|
| List<ContextRoot> contextRoots = parameters.roots;
|
| List<ContextRoot> oldRoots = driverMap.keys.toList();
|
| for (ContextRoot contextRoot in contextRoots) {
|
| @@ -268,8 +271,8 @@ abstract class ServerPlugin {
|
| /**
|
| * Handle an 'analysis.setPriorityFiles' request.
|
| */
|
| - AnalysisSetPriorityFilesResult handleAnalysisSetPriorityFiles(
|
| - AnalysisSetPriorityFilesParams parameters) {
|
| + Future<AnalysisSetPriorityFilesResult> handleAnalysisSetPriorityFiles(
|
| + AnalysisSetPriorityFilesParams parameters) async {
|
| List<String> files = parameters.files;
|
| Map<AnalysisDriverGeneric, List<String>> filesByDriver =
|
| <AnalysisDriverGeneric, List<String>>{};
|
| @@ -292,8 +295,8 @@ abstract class ServerPlugin {
|
| * override this method, but should instead use the [subscriptionManager] to
|
| * access the list of subscriptions for any given file.
|
| */
|
| - AnalysisSetSubscriptionsResult handleAnalysisSetSubscriptions(
|
| - AnalysisSetSubscriptionsParams parameters) {
|
| + Future<AnalysisSetSubscriptionsResult> handleAnalysisSetSubscriptions(
|
| + AnalysisSetSubscriptionsParams parameters) async {
|
| Map<AnalysisService, List<String>> subscriptions = parameters.subscriptions;
|
| Map<String, List<AnalysisService>> newSubscriptions =
|
| subscriptionManager.setSubscriptions(subscriptions);
|
| @@ -306,8 +309,8 @@ abstract class ServerPlugin {
|
| * override this method, but should instead use the [contentCache] to access
|
| * the current content of overlaid files.
|
| */
|
| - AnalysisUpdateContentResult handleAnalysisUpdateContent(
|
| - AnalysisUpdateContentParams parameters) {
|
| + Future<AnalysisUpdateContentResult> handleAnalysisUpdateContent(
|
| + AnalysisUpdateContentParams parameters) async {
|
| Map<String, Object> files = parameters.files;
|
| files.forEach((String filePath, Object overlay) {
|
| // We don't need to get the correct URI because only the full path is
|
| @@ -343,15 +346,16 @@ abstract class ServerPlugin {
|
| /**
|
| * Handle a 'completion.getSuggestions' request.
|
| */
|
| - CompletionGetSuggestionsResult handleCompletionGetSuggestions(
|
| - CompletionGetSuggestionsParams parameters) =>
|
| + Future<CompletionGetSuggestionsResult> handleCompletionGetSuggestions(
|
| + CompletionGetSuggestionsParams parameters) async =>
|
| new CompletionGetSuggestionsResult(
|
| -1, -1, const <CompletionSuggestion>[]);
|
|
|
| /**
|
| * Handle an 'edit.getAssists' request.
|
| */
|
| - EditGetAssistsResult handleEditGetAssists(EditGetAssistsParams parameters) =>
|
| + Future<EditGetAssistsResult> handleEditGetAssists(
|
| + EditGetAssistsParams parameters) async =>
|
| new EditGetAssistsResult(const <PrioritizedSourceChange>[]);
|
|
|
| /**
|
| @@ -359,21 +363,22 @@ abstract class ServerPlugin {
|
| * this method in order to participate in refactorings must also override the
|
| * method [handleEditGetRefactoring].
|
| */
|
| - EditGetAvailableRefactoringsResult handleEditGetAvailableRefactorings(
|
| - EditGetAvailableRefactoringsParams parameters) =>
|
| + Future<EditGetAvailableRefactoringsResult> handleEditGetAvailableRefactorings(
|
| + EditGetAvailableRefactoringsParams parameters) async =>
|
| new EditGetAvailableRefactoringsResult(const <RefactoringKind>[]);
|
|
|
| /**
|
| * Handle an 'edit.getFixes' request.
|
| */
|
| - EditGetFixesResult handleEditGetFixes(EditGetFixesParams parameters) =>
|
| + Future<EditGetFixesResult> handleEditGetFixes(
|
| + EditGetFixesParams parameters) async =>
|
| new EditGetFixesResult(const <AnalysisErrorFixes>[]);
|
|
|
| /**
|
| * Handle an 'edit.getRefactoring' request.
|
| */
|
| - EditGetRefactoringResult handleEditGetRefactoring(
|
| - EditGetRefactoringParams parameters) =>
|
| + Future<EditGetRefactoringResult> handleEditGetRefactoring(
|
| + EditGetRefactoringParams parameters) async =>
|
| null;
|
|
|
| /**
|
| @@ -381,14 +386,15 @@ abstract class ServerPlugin {
|
| * perform any required clean-up, but cannot prevent the plugin from shutting
|
| * down.
|
| */
|
| - PluginShutdownResult handlePluginShutdown(PluginShutdownParams parameters) =>
|
| + Future<PluginShutdownResult> handlePluginShutdown(
|
| + PluginShutdownParams parameters) async =>
|
| new PluginShutdownResult();
|
|
|
| /**
|
| * Handle a 'plugin.versionCheck' request.
|
| */
|
| - PluginVersionCheckResult handlePluginVersionCheck(
|
| - PluginVersionCheckParams parameters) {
|
| + Future<PluginVersionCheckResult> handlePluginVersionCheck(
|
| + PluginVersionCheckParams parameters) async {
|
| String byteStorePath = parameters.byteStorePath;
|
| String versionString = parameters.version;
|
| Version serverVersion = new Version.parse(versionString);
|
| @@ -441,68 +447,68 @@ abstract class ServerPlugin {
|
| * Compute the response that should be returned for the given [request], or
|
| * `null` if the response has already been sent.
|
| */
|
| - Response _getResponse(Request request) {
|
| + Future<Response> _getResponse(Request request) async {
|
| ResponseResult result = null;
|
| switch (request.method) {
|
| case ANALYSIS_REQUEST_HANDLE_WATCH_EVENTS:
|
| var params = new AnalysisHandleWatchEventsParams.fromRequest(request);
|
| - result = handleAnalysisHandleWatchEvents(params);
|
| + result = await handleAnalysisHandleWatchEvents(params);
|
| break;
|
| case ANALYSIS_REQUEST_REANALYZE:
|
| var params = new AnalysisReanalyzeParams.fromRequest(request);
|
| - result = handleAnalysisReanalyze(params);
|
| + result = await handleAnalysisReanalyze(params);
|
| break;
|
| case ANALYSIS_REQUEST_SET_CONTEXT_BUILDER_OPTIONS:
|
| var params =
|
| new AnalysisSetContextBuilderOptionsParams.fromRequest(request);
|
| - result = handleAnalysisSetContextBuilderOptions(params);
|
| + result = await handleAnalysisSetContextBuilderOptions(params);
|
| break;
|
| case ANALYSIS_REQUEST_SET_CONTEXT_ROOTS:
|
| var params = new AnalysisSetContextRootsParams.fromRequest(request);
|
| - result = handleAnalysisSetContextRoots(params);
|
| + result = await handleAnalysisSetContextRoots(params);
|
| break;
|
| case ANALYSIS_REQUEST_SET_PRIORITY_FILES:
|
| var params = new AnalysisSetPriorityFilesParams.fromRequest(request);
|
| - result = handleAnalysisSetPriorityFiles(params);
|
| + result = await handleAnalysisSetPriorityFiles(params);
|
| break;
|
| case ANALYSIS_REQUEST_SET_SUBSCRIPTIONS:
|
| var params = new AnalysisSetSubscriptionsParams.fromRequest(request);
|
| - result = handleAnalysisSetSubscriptions(params);
|
| + result = await handleAnalysisSetSubscriptions(params);
|
| break;
|
| case ANALYSIS_REQUEST_UPDATE_CONTENT:
|
| var params = new AnalysisUpdateContentParams.fromRequest(request);
|
| - result = handleAnalysisUpdateContent(params);
|
| + result = await handleAnalysisUpdateContent(params);
|
| break;
|
| case COMPLETION_REQUEST_GET_SUGGESTIONS:
|
| var params = new CompletionGetSuggestionsParams.fromRequest(request);
|
| - result = handleCompletionGetSuggestions(params);
|
| + result = await handleCompletionGetSuggestions(params);
|
| break;
|
| case EDIT_REQUEST_GET_ASSISTS:
|
| var params = new EditGetAssistsParams.fromRequest(request);
|
| - result = handleEditGetAssists(params);
|
| + result = await handleEditGetAssists(params);
|
| break;
|
| case EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS:
|
| var params =
|
| new EditGetAvailableRefactoringsParams.fromRequest(request);
|
| - result = handleEditGetAvailableRefactorings(params);
|
| + result = await handleEditGetAvailableRefactorings(params);
|
| break;
|
| case EDIT_REQUEST_GET_FIXES:
|
| var params = new EditGetFixesParams.fromRequest(request);
|
| - result = handleEditGetFixes(params);
|
| + result = await handleEditGetFixes(params);
|
| break;
|
| case EDIT_REQUEST_GET_REFACTORING:
|
| var params = new EditGetRefactoringParams.fromRequest(request);
|
| - result = handleEditGetRefactoring(params);
|
| + result = await handleEditGetRefactoring(params);
|
| break;
|
| case PLUGIN_REQUEST_SHUTDOWN:
|
| var params = new PluginShutdownParams();
|
| - result = handlePluginShutdown(params);
|
| + result = await handlePluginShutdown(params);
|
| _channel.sendResponse(result.toResponse(request.id));
|
| _channel.close();
|
| return null;
|
| case PLUGIN_REQUEST_VERSION_CHECK:
|
| var params = new PluginVersionCheckParams.fromRequest(request);
|
| - result = handlePluginVersionCheck(params);
|
| + result = await handlePluginVersionCheck(params);
|
| break;
|
| }
|
| if (result == null) {
|
| @@ -516,13 +522,13 @@ abstract class ServerPlugin {
|
| * The method that is called when a [request] is received from the analysis
|
| * server.
|
| */
|
| - void _onRequest(Request request) {
|
| + Future<Null> _onRequest(Request request) async {
|
| String id = request.id;
|
| Response response;
|
| try {
|
| - response = _getResponse(request);
|
| + response = await _getResponse(request);
|
| } on RequestFailure catch (exception) {
|
| - _channel.sendResponse(new Response(id, error: exception.error));
|
| + response = new Response(id, error: exception.error);
|
| } catch (exception, stackTrace) {
|
| response = new Response(id,
|
| error: new RequestError(
|
|
|