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

Side by Side Diff: pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart

Issue 1347283005: refactor ContributionSorter to use new API (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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 unified diff | Download patch
OLDNEW
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 library services.completion.dart; 5 library services.completion.dart;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/completion/completion_core.dart' 9 import 'package:analysis_server/completion/completion_core.dart'
10 show CompletionRequest; 10 show CompletionRequest;
11 import 'package:analysis_server/completion/completion_dart.dart' as newApi; 11 import 'package:analysis_server/completion/completion_dart.dart' as newApi;
12 import 'package:analysis_server/completion/dart/completion_target.dart';
12 import 'package:analysis_server/src/analysis_server.dart'; 13 import 'package:analysis_server/src/analysis_server.dart';
13 import 'package:analysis_server/src/protocol.dart'; 14 import 'package:analysis_server/src/protocol.dart';
14 import 'package:analysis_server/src/services/completion/arglist_contributor.dart '; 15 import 'package:analysis_server/src/services/completion/arglist_contributor.dart ';
15 import 'package:analysis_server/src/services/completion/combinator_contributor.d art'; 16 import 'package:analysis_server/src/services/completion/combinator_contributor.d art';
16 import 'package:analysis_server/src/services/completion/common_usage_computer.da rt'; 17 import 'package:analysis_server/src/services/completion/common_usage_computer.da rt';
17 import 'package:analysis_server/src/services/completion/completion_manager.dart' ; 18 import 'package:analysis_server/src/services/completion/completion_manager.dart' ;
18 import 'package:analysis_server/src/services/completion/completion_target.dart';
19 import 'package:analysis_server/src/services/completion/contribution_sorter.dart '; 19 import 'package:analysis_server/src/services/completion/contribution_sorter.dart ';
20 import 'package:analysis_server/src/services/completion/dart_completion_cache.da rt'; 20 import 'package:analysis_server/src/services/completion/dart_completion_cache.da rt';
21 import 'package:analysis_server/src/services/completion/imported_reference_contr ibutor.dart'; 21 import 'package:analysis_server/src/services/completion/imported_reference_contr ibutor.dart';
22 import 'package:analysis_server/src/services/completion/inherited_computer.dart' ; 22 import 'package:analysis_server/src/services/completion/inherited_computer.dart' ;
23 import 'package:analysis_server/src/services/completion/keyword_contributor.dart '; 23 import 'package:analysis_server/src/services/completion/keyword_contributor.dart ';
24 import 'package:analysis_server/src/services/completion/local_reference_contribu tor.dart'; 24 import 'package:analysis_server/src/services/completion/local_reference_contribu tor.dart';
25 import 'package:analysis_server/src/services/completion/optype.dart'; 25 import 'package:analysis_server/src/services/completion/optype.dart';
26 import 'package:analysis_server/src/services/completion/prefixed_element_contrib utor.dart'; 26 import 'package:analysis_server/src/services/completion/prefixed_element_contrib utor.dart';
27 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; 27 import 'package:analysis_server/src/services/completion/uri_contributor.dart';
28 import 'package:analysis_server/src/services/search/search_engine.dart'; 28 import 'package:analysis_server/src/services/search/search_engine.dart';
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 * in the given completion context are resolved. 69 * in the given completion context are resolved.
70 * Returns `true` if the receiver modified the list of suggestions. 70 * Returns `true` if the receiver modified the list of suggestions.
71 */ 71 */
72 Future<bool> computeFull(DartCompletionRequest request); 72 Future<bool> computeFull(DartCompletionRequest request);
73 } 73 }
74 74
75 /** 75 /**
76 * Manages code completion for a given Dart file completion request. 76 * Manages code completion for a given Dart file completion request.
77 */ 77 */
78 class DartCompletionManager extends CompletionManager { 78 class DartCompletionManager extends CompletionManager {
79
80 /** 79 /**
81 * The [defaultContributionSorter] is a long-lived object that isn't allowed 80 * The [defaultContributionSorter] is a long-lived object that isn't allowed
82 * to maintain state between calls to [ContributionSorter#sort(...)]. 81 * to maintain state between calls to [ContributionSorter#sort(...)].
83 */ 82 */
84 static ContributionSorter defaultContributionSorter = new CommonUsageComputer( ); 83 static ContributionSorter defaultContributionSorter =
84 new CommonUsageComputer();
85 85
86 final SearchEngine searchEngine; 86 final SearchEngine searchEngine;
87 final DartCompletionCache cache; 87 final DartCompletionCache cache;
88 List<DartCompletionContributor> contributors; 88 List<DartCompletionContributor> contributors;
89 ContributionSorter contributionSorter; 89 ContributionSorter contributionSorter;
90 90
91 DartCompletionManager( 91 DartCompletionManager(
92 AnalysisContext context, this.searchEngine, Source source, this.cache, 92 AnalysisContext context, this.searchEngine, Source source, this.cache,
93 [this.contributors, this.contributionSorter]) 93 [this.contributors, this.contributionSorter])
94 : super(context, source) { 94 : super(context, source) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 } 174 }
175 } 175 }
176 } 176 }
177 177
178 List<DartCompletionContributor> todo = new List.from(contributors); 178 List<DartCompletionContributor> todo = new List.from(contributors);
179 todo.removeWhere((DartCompletionContributor c) { 179 todo.removeWhere((DartCompletionContributor c) {
180 return performance.logElapseTime('computeFast ${c.runtimeType}', () { 180 return performance.logElapseTime('computeFast ${c.runtimeType}', () {
181 return c.computeFast(request); 181 return c.computeFast(request);
182 }); 182 });
183 }); 183 });
184 contributionSorter.sort(request); 184 contributionSorter.sort(
185 new OldRequestWrapper(request), request.suggestions);
185 sendResults(request, todo.isEmpty); 186 sendResults(request, todo.isEmpty);
186 return todo; 187 return todo;
187 }); 188 });
188 } 189 }
189 190
190 /** 191 /**
191 * If there is remaining work to be done, then wait for the unit to be 192 * If there is remaining work to be done, then wait for the unit to be
192 * resolved and request that each remaining contributor finish their work. 193 * resolved and request that each remaining contributor finish their work.
193 * Return a [Future] that completes when the last notification has been sent. 194 * Return a [Future] that completes when the last notification has been sent.
194 */ 195 */
(...skipping 17 matching lines...) Expand all
212 int count = todo.length; 213 int count = todo.length;
213 todo.forEach((DartCompletionContributor c) { 214 todo.forEach((DartCompletionContributor c) {
214 String name = c.runtimeType.toString(); 215 String name = c.runtimeType.toString();
215 String completeTag = 'computeFull $name complete'; 216 String completeTag = 'computeFull $name complete';
216 performance.logStartTime(completeTag); 217 performance.logStartTime(completeTag);
217 performance.logElapseTime('computeFull $name', () { 218 performance.logElapseTime('computeFull $name', () {
218 c.computeFull(request).then((bool changed) { 219 c.computeFull(request).then((bool changed) {
219 performance.logElapseTime(completeTag); 220 performance.logElapseTime(completeTag);
220 bool last = --count == 0; 221 bool last = --count == 0;
221 if (changed || last) { 222 if (changed || last) {
222 contributionSorter.sort(request); 223 contributionSorter.sort(
224 new OldRequestWrapper(request), request.suggestions);
223 sendResults(request, last); 225 sendResults(request, last);
224 } 226 }
225 }); 227 });
226 }); 228 });
227 }); 229 });
228 }); 230 });
229 }); 231 });
230 } 232 }
231 233
232 @override 234 @override
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 @override 479 @override
478 int get offset => request.offset; 480 int get offset => request.offset;
479 481
480 @override 482 @override
481 ResourceProvider get resourceProvider => request.resourceProvider; 483 ResourceProvider get resourceProvider => request.resourceProvider;
482 484
483 @override 485 @override
484 Source get source => request.source; 486 Source get source => request.source;
485 487
486 @override 488 @override
489 CompletionTarget get target => request.target;
490
491 @override
487 CompilationUnit get unit => request.unit; 492 CompilationUnit get unit => request.unit;
488 493
489 @override 494 @override
490 String toString() => 'wrapped $request'; 495 String toString() => 'wrapped $request';
491 } 496 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698