OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:analysis_server/protocol/protocol.dart'; | 7 import 'package:analysis_server/protocol/protocol.dart'; |
8 import 'package:analysis_server/protocol/protocol_constants.dart'; | 8 import 'package:analysis_server/protocol/protocol_constants.dart'; |
9 import 'package:analysis_server/protocol/protocol_generated.dart'; | 9 import 'package:analysis_server/protocol/protocol_generated.dart'; |
10 import 'package:analysis_server/src/analysis_server.dart'; | 10 import 'package:analysis_server/src/analysis_server.dart'; |
11 import 'package:analysis_server/src/collections.dart'; | 11 import 'package:analysis_server/src/collections.dart'; |
12 import 'package:analysis_server/src/domain_abstract.dart'; | 12 import 'package:analysis_server/src/domain_abstract.dart'; |
13 import 'package:analysis_server/src/plugin/plugin_manager.dart'; | 13 import 'package:analysis_server/src/plugin/plugin_manager.dart'; |
14 import 'package:analysis_server/src/provisional/completion/completion_core.dart'
; | 14 import 'package:analysis_server/src/provisional/completion/completion_core.dart'
; |
15 import 'package:analysis_server/src/services/completion/completion_core.dart'; | 15 import 'package:analysis_server/src/services/completion/completion_core.dart'; |
16 import 'package:analysis_server/src/services/completion/completion_performance.d
art'; | 16 import 'package:analysis_server/src/services/completion/completion_performance.d
art'; |
| 17 import 'package:analysis_server/src/services/completion/dart/completion_manager.
dart'; |
17 import 'package:analyzer/src/dart/analysis/driver.dart'; | 18 import 'package:analyzer/src/dart/analysis/driver.dart'; |
18 import 'package:analyzer/src/generated/source.dart'; | 19 import 'package:analyzer/src/generated/source.dart'; |
19 import 'package:analyzer_plugin/protocol/protocol.dart' as plugin; | 20 import 'package:analyzer_plugin/protocol/protocol.dart' as plugin; |
20 import 'package:analyzer_plugin/protocol/protocol_common.dart'; | 21 import 'package:analyzer_plugin/protocol/protocol_common.dart'; |
21 import 'package:analyzer_plugin/protocol/protocol_constants.dart' as plugin; | 22 import 'package:analyzer_plugin/protocol/protocol_constants.dart' as plugin; |
22 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin; | 23 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin; |
23 | 24 |
24 /** | 25 /** |
25 * Instances of the class [CompletionDomainHandler] implement a [RequestHandler] | 26 * Instances of the class [CompletionDomainHandler] implement a [RequestHandler] |
26 * that handles requests in the completion domain. | 27 * that handles requests in the completion domain. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 if (driver != null) { | 84 if (driver != null) { |
84 requestParams = new plugin.CompletionGetSuggestionsParams(file, offset); | 85 requestParams = new plugin.CompletionGetSuggestionsParams(file, offset); |
85 pluginFutures = server.pluginManager | 86 pluginFutures = server.pluginManager |
86 .broadcastRequest(requestParams, contextRoot: driver.contextRoot); | 87 .broadcastRequest(requestParams, contextRoot: driver.contextRoot); |
87 } | 88 } |
88 // | 89 // |
89 // Compute completions generated by server. | 90 // Compute completions generated by server. |
90 // | 91 // |
91 List<CompletionSuggestion> suggestions = <CompletionSuggestion>[]; | 92 List<CompletionSuggestion> suggestions = <CompletionSuggestion>[]; |
92 if (request.result != null) { | 93 if (request.result != null) { |
93 Iterable<CompletionContributor> newContributors = | |
94 server.serverPlugin.completionContributors; | |
95 | |
96 const COMPUTE_SUGGESTIONS_TAG = 'computeSuggestions'; | 94 const COMPUTE_SUGGESTIONS_TAG = 'computeSuggestions'; |
97 performance.logStartTime(COMPUTE_SUGGESTIONS_TAG); | 95 performance.logStartTime(COMPUTE_SUGGESTIONS_TAG); |
98 | 96 |
99 for (CompletionContributor contributor in newContributors) { | 97 CompletionContributor contributor = new DartCompletionManager(); |
100 String contributorTag = 'computeSuggestions - ${contributor | 98 String contributorTag = 'computeSuggestions - ${contributor |
101 .runtimeType}'; | 99 .runtimeType}'; |
102 performance.logStartTime(contributorTag); | 100 performance.logStartTime(contributorTag); |
103 try { | 101 try { |
104 suggestions.addAll(await contributor.computeSuggestions(request)); | 102 suggestions.addAll(await contributor.computeSuggestions(request)); |
105 } on AbortCompletion { | 103 } on AbortCompletion { |
106 suggestions.clear(); | 104 suggestions.clear(); |
107 break; | |
108 } | |
109 performance.logElapseTime(contributorTag); | |
110 } | 105 } |
| 106 performance.logElapseTime(contributorTag); |
111 performance.logElapseTime(COMPUTE_SUGGESTIONS_TAG); | 107 performance.logElapseTime(COMPUTE_SUGGESTIONS_TAG); |
112 } | 108 } |
113 // TODO (danrubel) if request is obsolete (processAnalysisRequest returns | 109 // TODO (danrubel) if request is obsolete (processAnalysisRequest returns |
114 // false) then send empty results | 110 // false) then send empty results |
115 | 111 |
116 // | 112 // |
117 // Add the fixes produced by plugins to the server-generated fixes. | 113 // Add the fixes produced by plugins to the server-generated fixes. |
118 // | 114 // |
119 if (pluginFutures != null) { | 115 if (pluginFutures != null) { |
120 List<plugin.Response> responses = await waitForResponses(pluginFutures, | 116 List<plugin.Response> responses = await waitForResponses(pluginFutures, |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 final int replacementOffset; | 289 final int replacementOffset; |
294 | 290 |
295 /** | 291 /** |
296 * The suggested completions. | 292 * The suggested completions. |
297 */ | 293 */ |
298 final List<CompletionSuggestion> suggestions; | 294 final List<CompletionSuggestion> suggestions; |
299 | 295 |
300 CompletionResult( | 296 CompletionResult( |
301 this.replacementOffset, this.replacementLength, this.suggestions); | 297 this.replacementOffset, this.replacementLength, this.suggestions); |
302 } | 298 } |
OLD | NEW |