| Index: pkg/analysis_server/lib/src/domain_completion.dart
|
| diff --git a/pkg/analysis_server/lib/src/domain_completion.dart b/pkg/analysis_server/lib/src/domain_completion.dart
|
| index e015a40acacf0af45655680c0fbabda42a7974a8..a00617f22f630dbfa41cec09a5e82fe4a60abbf3 100644
|
| --- a/pkg/analysis_server/lib/src/domain_completion.dart
|
| +++ b/pkg/analysis_server/lib/src/domain_completion.dart
|
| @@ -87,26 +87,28 @@ class CompletionDomainHandler extends AbstractRequestHandler {
|
| //
|
| // Compute completions generated by server.
|
| //
|
| - Iterable<CompletionContributor> newContributors =
|
| - server.serverPlugin.completionContributors;
|
| List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
|
| -
|
| - const COMPUTE_SUGGESTIONS_TAG = 'computeSuggestions';
|
| - performance.logStartTime(COMPUTE_SUGGESTIONS_TAG);
|
| -
|
| - for (CompletionContributor contributor in newContributors) {
|
| - String contributorTag = 'computeSuggestions - ${contributor.runtimeType}';
|
| - performance.logStartTime(contributorTag);
|
| - try {
|
| - suggestions.addAll(await contributor.computeSuggestions(request));
|
| - } on AbortCompletion {
|
| - suggestions.clear();
|
| - break;
|
| + if (request.result != null) {
|
| + Iterable<CompletionContributor> newContributors =
|
| + server.serverPlugin.completionContributors;
|
| +
|
| + const COMPUTE_SUGGESTIONS_TAG = 'computeSuggestions';
|
| + performance.logStartTime(COMPUTE_SUGGESTIONS_TAG);
|
| +
|
| + for (CompletionContributor contributor in newContributors) {
|
| + String contributorTag = 'computeSuggestions - ${contributor
|
| + .runtimeType}';
|
| + performance.logStartTime(contributorTag);
|
| + try {
|
| + suggestions.addAll(await contributor.computeSuggestions(request));
|
| + } on AbortCompletion {
|
| + suggestions.clear();
|
| + break;
|
| + }
|
| + performance.logElapseTime(contributorTag);
|
| }
|
| - performance.logElapseTime(contributorTag);
|
| + performance.logElapseTime(COMPUTE_SUGGESTIONS_TAG);
|
| }
|
| - performance.logElapseTime(COMPUTE_SUGGESTIONS_TAG);
|
| -
|
| // TODO (danrubel) if request is obsolete (processAnalysisRequest returns
|
| // false) then send empty results
|
|
|
| @@ -161,8 +163,11 @@ class CompletionDomainHandler extends AbstractRequestHandler {
|
| // extract and validate params
|
| CompletionGetSuggestionsParams params =
|
| new CompletionGetSuggestionsParams.fromRequest(request);
|
| + String filePath = params.file;
|
| + int offset = params.offset;
|
|
|
| - AnalysisResult result = await server.getAnalysisResult(params.file);
|
| + AnalysisResult result = await server.getAnalysisResult(filePath);
|
| + Source source;
|
|
|
| if (result == null || !result.exists) {
|
| if (server.onNoAnalysisCompletion != null) {
|
| @@ -170,31 +175,27 @@ class CompletionDomainHandler extends AbstractRequestHandler {
|
| await server.onNoAnalysisCompletion(
|
| request, this, params, performance, completionId);
|
| return;
|
| - } else {
|
| - server.sendResponse(new Response.unknownSource(request));
|
| + }
|
| + source = server.resourceProvider.getFile(filePath).createSource();
|
| + } else {
|
| + if (offset < 0 || offset > result.content.length) {
|
| + server.sendResponse(new Response.invalidParameter(
|
| + request,
|
| + 'params.offset',
|
| + 'Expected offset between 0 and source length inclusive,'
|
| + ' but found ${offset}'));
|
| return;
|
| }
|
| - }
|
| + source =
|
| + server.resourceProvider.getFile(result.path).createSource(result.uri);
|
|
|
| - if (params.offset < 0 || params.offset > result.content.length) {
|
| - server.sendResponse(new Response.invalidParameter(
|
| - request,
|
| - 'params.offset',
|
| - 'Expected offset between 0 and source length inclusive,'
|
| - ' but found ${params.offset}'));
|
| - return;
|
| + recordRequest(performance, source, result.content, offset);
|
| }
|
| -
|
| - Source source =
|
| - server.resourceProvider.getFile(result.path).createSource(result.uri);
|
| -
|
| - recordRequest(performance, source, result.content, params.offset);
|
| -
|
| CompletionRequestImpl completionRequest = new CompletionRequestImpl(
|
| result,
|
| server.resourceProvider,
|
| source,
|
| - params.offset,
|
| + offset,
|
| performance,
|
| server.ideOptions);
|
|
|
|
|