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

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

Issue 1115843003: restructure internal request to implement CompletionRequest API, (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
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 bb7d55c656364332fd23e9dcc21d37d16e967881..f9a5d2053bd62a52a68b4529888f35c3db89f472 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
@@ -6,6 +6,9 @@ library services.completion.dart;
import 'dart:async';
+import 'package:analysis_server/completion/completion_core.dart'
+ show CompletionRequest;
+import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/protocol.dart';
import 'package:analysis_server/src/services/completion/arglist_contributor.dart';
import 'package:analysis_server/src/services/completion/combinator_contributor.dart';
@@ -121,8 +124,9 @@ class DartCompletionManager extends CompletionManager {
* then send an initial response to the client.
* Return a list of contributors for which [computeFull] should be called
*/
- List<DartCompletionContributor> computeFast(DartCompletionRequest request) {
- return request.performance.logElapseTime('computeFast', () {
+ List<DartCompletionContributor> computeFast(
+ DartCompletionRequest request, CompletionPerformance performance) {
+ return performance.logElapseTime('computeFast', () {
CompilationUnit unit = context.parseCompilationUnit(source);
request.unit = unit;
request.target = new CompletionTarget.forOffset(unit, request.offset);
@@ -145,8 +149,7 @@ class DartCompletionManager extends CompletionManager {
List<DartCompletionContributor> todo = new List.from(contributors);
todo.removeWhere((DartCompletionContributor c) {
- return request.performance.logElapseTime('computeFast ${c.runtimeType}',
- () {
+ return performance.logElapseTime('computeFast ${c.runtimeType}', () {
return c.computeFast(request);
});
});
@@ -161,19 +164,19 @@ class DartCompletionManager extends CompletionManager {
* resolved and request that each remaining contributor finish their work.
* Return a [Future] that completes when the last notification has been sent.
*/
- Future computeFull(
- DartCompletionRequest request, List<DartCompletionContributor> todo) {
- request.performance.logStartTime('waitForAnalysis');
+ Future computeFull(DartCompletionRequest request,
+ CompletionPerformance performance, List<DartCompletionContributor> todo) {
+ performance.logStartTime('waitForAnalysis');
return waitForAnalysis().then((CompilationUnit unit) {
if (controller.isClosed) {
return;
}
- request.performance.logElapseTime('waitForAnalysis');
+ performance.logElapseTime('waitForAnalysis');
if (unit == null) {
sendResults(request, true);
return;
}
- request.performance.logElapseTime('computeFull', () {
+ performance.logElapseTime('computeFull', () {
request.unit = unit;
// TODO(paulberry): Do we need to invoke _ReplacementOffsetBuilder
// again?
@@ -182,10 +185,10 @@ class DartCompletionManager extends CompletionManager {
todo.forEach((DartCompletionContributor c) {
String name = c.runtimeType.toString();
String completeTag = 'computeFull $name complete';
- request.performance.logStartTime(completeTag);
- request.performance.logElapseTime('computeFull $name', () {
+ performance.logStartTime(completeTag);
+ performance.logElapseTime('computeFull $name', () {
c.computeFull(request).then((bool changed) {
- request.performance.logElapseTime(completeTag);
+ performance.logElapseTime(completeTag);
bool last = --count == 0;
if (changed || last) {
commonUsageComputer.computeFull(request);
@@ -200,13 +203,13 @@ class DartCompletionManager extends CompletionManager {
@override
void computeSuggestions(CompletionRequest completionRequest) {
- DartCompletionRequest request = new DartCompletionRequest(context,
- searchEngine, source, completionRequest.offset, cache,
- completionRequest.performance);
- request.performance.logElapseTime('compute', () {
- List<DartCompletionContributor> todo = computeFast(request);
+ DartCompletionRequest request =
+ new DartCompletionRequest.from(completionRequest, cache);
+ CompletionPerformance performance = new CompletionPerformance();
+ performance.logElapseTime('compute', () {
+ List<DartCompletionContributor> todo = computeFast(request, performance);
if (!todo.isEmpty) {
- computeFull(request, todo);
+ computeFull(request, performance, todo);
}
});
}
@@ -251,22 +254,7 @@ class DartCompletionManager extends CompletionManager {
/**
* The context in which the completion is requested.
*/
-class DartCompletionRequest extends CompletionRequest {
- /**
- * The analysis context in which the completion is requested.
- */
- final AnalysisContext context;
-
- /**
- * The search engine for use when building suggestions.
- */
- final SearchEngine searchEngine;
-
- /**
- * The source in which the completion is requested.
- */
- final Source source;
-
+class DartCompletionRequest extends CompletionRequestImpl {
/**
* Cached information from a prior code completion operation.
*/
@@ -316,9 +304,13 @@ class DartCompletionRequest extends CompletionRequest {
*/
final Set<String> _completions = new Set<String>();
- DartCompletionRequest(this.context, this.searchEngine, this.source,
- int offset, this.cache, CompletionPerformance performance)
- : super(offset, performance);
+ DartCompletionRequest(AnalysisServer server, AnalysisContext context,
+ Source source, int offset, this.cache)
+ : super(server, context, source, offset);
+
+ factory DartCompletionRequest.from(CompletionRequestImpl request,
+ DartCompletionCache cache) => new DartCompletionRequest(
+ request.server, request.context, request.source, request.offset, cache);
/**
* Return the original text from the [replacementOffset] to the [offset]
@@ -341,6 +333,11 @@ class DartCompletionRequest extends CompletionRequest {
}
/**
+ * The search engine for use when building suggestions.
+ */
+ SearchEngine get searchEngine => server.searchEngine;
+
+ /**
* The list of suggestions to be sent to the client.
*/
Iterable<CompletionSuggestion> get suggestions => _suggestions;

Powered by Google App Engine
This is Rietveld 408576698