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

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

Issue 758953003: update computeFast/Full now that completion manager is long lived (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart
diff --git a/pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart
index d42722e7c9d32320d739fa93e7170dd968053aeb..07b93f9a8231f3d3da76c122c0b7eae066a46394 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart
@@ -78,21 +78,24 @@ class DartCompletionManager extends CompletionManager {
/**
* Compute suggestions based upon cached information only
* then send an initial response to the client.
+ * Return a list of computers for which [computeFull] should be called
*/
- void computeFast(DartCompletionRequest request) {
- request.performance.logElapseTime('computeFast', () {
+ List<DartCompletionComputer> computeFast(DartCompletionRequest request) {
+ return request.performance.logElapseTime('computeFast', () {
CompilationUnit unit = context.parseCompilationUnit(source);
request.unit = unit;
request.node = new NodeLocator.con1(request.offset).searchWithin(unit);
request.node.accept(new _ReplacementOffsetBuilder(request));
- computers.removeWhere((DartCompletionComputer c) {
+ List<DartCompletionComputer> todo = new List.from(computers);
+ todo.removeWhere((DartCompletionComputer c) {
return request.performance.logElapseTime(
'computeFast ${c.runtimeType}',
() {
return c.computeFast(request);
});
});
- sendResults(request, computers.isEmpty);
+ sendResults(request, todo.isEmpty);
+ return todo;
});
}
@@ -100,7 +103,8 @@ class DartCompletionManager extends CompletionManager {
* If there is remaining work to be done, then wait for the unit to be
* resolved and request that each remaining computer finish their work.
*/
- void computeFull(DartCompletionRequest request) {
+ void computeFull(DartCompletionRequest request,
+ List<DartCompletionComputer> todo) {
request.performance.logStartTime('waitForAnalysis');
waitForAnalysis().then((CompilationUnit unit) {
request.performance.logElapseTime('waitForAnalysis');
@@ -111,8 +115,8 @@ class DartCompletionManager extends CompletionManager {
request.performance.logElapseTime('computeFull', () {
request.unit = unit;
request.node = new NodeLocator.con1(request.offset).searchWithin(unit);
- int count = computers.length;
- computers.forEach((DartCompletionComputer c) {
+ int count = todo.length;
+ todo.forEach((DartCompletionComputer c) {
String name = c.runtimeType.toString();
String completeTag = 'computeFull $name complete';
request.performance.logStartTime(completeTag);
@@ -140,9 +144,9 @@ class DartCompletionManager extends CompletionManager {
cache,
completionRequest.performance);
request.performance.logElapseTime('compute', () {
- computeFast(request);
- if (!computers.isEmpty) {
- computeFull(request);
+ List<DartCompletionComputer> todo = computeFast(request);
+ if (!todo.isEmpty) {
+ computeFull(request, todo);
}
});
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698