| Index: pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
|
| diff --git a/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart b/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
|
| index 813a6ace72aee546c7528b9b0a5525885ecffafc..a4008136658b4b22af8c706f439a2801739a61a9 100644
|
| --- a/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
|
| +++ b/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
|
| @@ -23,34 +23,24 @@ import 'package:analyzer_plugin/utilities/generator.dart';
|
| abstract class CompletionMixin implements ServerPlugin {
|
| /**
|
| * Return a list containing the completion contributors that should be used to
|
| - * create completion suggestions when used in the context of the given
|
| - * analysis [driver].
|
| + * create completion suggestions for the file with the given [path].
|
| */
|
| - List<CompletionContributor> getCompletionContributors(
|
| - covariant AnalysisDriverGeneric driver);
|
| + List<CompletionContributor> getCompletionContributors(String path);
|
|
|
| /**
|
| * Return the completion request that should be passes to the contributors
|
| * returned from [getCompletionContributors].
|
| */
|
| Future<CompletionRequest> getCompletionRequest(
|
| - CompletionGetSuggestionsParams parameters,
|
| - covariant AnalysisDriverGeneric driver);
|
| + CompletionGetSuggestionsParams parameters);
|
|
|
| @override
|
| Future<CompletionGetSuggestionsResult> handleCompletionGetSuggestions(
|
| CompletionGetSuggestionsParams parameters) async {
|
| String path = parameters.file;
|
| - ContextRoot contextRoot = contextRootContaining(path);
|
| - if (contextRoot == null) {
|
| - // Return an error from the request.
|
| - throw new RequestFailure(
|
| - RequestErrorFactory.pluginError('Failed to analyze $path', null));
|
| - }
|
| - AnalysisDriverGeneric driver = driverMap[contextRoot];
|
| - CompletionRequest request = await getCompletionRequest(parameters, driver);
|
| + CompletionRequest request = await getCompletionRequest(parameters);
|
| CompletionGenerator generator =
|
| - new CompletionGenerator(getCompletionContributors(driver));
|
| + new CompletionGenerator(getCompletionContributors(path));
|
| GeneratorResult result =
|
| await generator.generateCompletionResponse(request);
|
| result.sendNotifications(channel);
|
| @@ -71,8 +61,14 @@ abstract class CompletionMixin implements ServerPlugin {
|
| abstract class DartCompletionMixin implements CompletionMixin {
|
| @override
|
| Future<CompletionRequest> getCompletionRequest(
|
| - CompletionGetSuggestionsParams parameters,
|
| - covariant AnalysisDriver driver) async {
|
| + CompletionGetSuggestionsParams parameters) async {
|
| + String path = parameters.file;
|
| + AnalysisDriver driver = driverForPath(path);
|
| + if (driver == null) {
|
| + // Return an error from the request.
|
| + throw new RequestFailure(
|
| + RequestErrorFactory.pluginError('Failed to analyze $path', null));
|
| + }
|
| ResolveResult result = await driver.getResult(parameters.file);
|
| return new DartCompletionRequestImpl(
|
| resourceProvider, parameters.offset, result);
|
|
|