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

Unified Diff: pkg/analysis_server/lib/src/provisional/completion/completion_dart.dart

Issue 1407273004: next step toward completion plugin API (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comments Created 5 years, 2 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
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/provisional/completion/dart/completion_target.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/provisional/completion/completion_dart.dart
diff --git a/pkg/analysis_server/lib/src/provisional/completion/completion_dart.dart b/pkg/analysis_server/lib/src/provisional/completion/completion_dart.dart
index e52c4332423381b6259f6d7b01b9d6dddcf67038..4c98fa2c29f7de9dc65f2755d075b2dde42107cc 100644
--- a/pkg/analysis_server/lib/src/provisional/completion/completion_dart.dart
+++ b/pkg/analysis_server/lib/src/provisional/completion/completion_dart.dart
@@ -4,56 +4,33 @@
library analysis_server.src.provisional.completion.completion_dart;
+import 'dart:async';
+
import 'package:analysis_server/plugin/protocol/protocol.dart';
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
+import 'package:analysis_server/src/services/completion/dart_completion_manager.dart'
+ show DART_RELEVANCE_DEFAULT;
import 'package:analyzer/src/generated/ast.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/element.dart' as model;
+import 'package:analyzer/task/model.dart';
/**
- * An object used to produce completions for a specific error within a Dart
- * file. Completion contributors are long-lived objects and must not retain any
- * state between invocations of [computeSuggestions].
+ * An object used to produce completions at a specific location within a Dart
+ * file. Contributors are long-lived objects and must be re-entrant.
*
* Clients may extend this class when implementing plugins.
*/
-abstract class DartCompletionContributor implements CompletionContributor {
- @override
- List<CompletionSuggestion> computeSuggestions(CompletionRequest request) {
- if (request is DartCompletionRequest) {
- return internalComputeSuggestions(request);
- }
- AnalysisContext context = request.context;
- Source source = request.source;
- List<Source> libraries = context.getLibrariesContaining(source);
- if (libraries.length < 1) {
- return null;
- }
-// CompilationUnit unit =
-// context.getResolvedCompilationUnit2(source, libraries[0]);
-// bool isResolved = true;
-// if (unit == null) {
-// // TODO(brianwilkerson) Implement a method for getting a parsed
-// // compilation unit without parsing the unit if it hasn't been parsed.
-// unit = context.getParsedCompilationUnit(source);
-// if (unit == null) {
-// return null;
-// }
-// isResolved = false;
-// }
-// DartCompletionRequest dartRequest =
-// new DartCompletionRequestImpl(request, unit, isResolved);
-// return internalComputeSuggestions(dartRequest);
- return null;
- }
-
+abstract class DartCompletionContributor {
/**
- * Compute a list of completion suggestions based on the given completion
- * [request]. Return the suggestions that were computed.
+ * Compute completion suggestions based upon the given completion [request]
+ * to the given completion [collector].
+ * Return a [Future] that completes when suggestions have been added
+ * or `null` if any suggestions to be added have been added
+ * when the method returns.
*/
- List<CompletionSuggestion> internalComputeSuggestions(
- DartCompletionRequest request);
+ Future computeSuggestions(
+ DartCompletionRequest request, DartSuggestionCollector collector);
}
/**
@@ -63,28 +40,52 @@ abstract class DartCompletionContributor implements CompletionContributor {
*/
abstract class DartCompletionRequest extends CompletionRequest {
/**
- * Return `true` if the compilation [unit] is resolved.
+ * Return the parsed completion target. This determines
+ * what part of the parse tree will receive the newly inserted text.
+ * Use [resolvedDeclarationTarget] to obtain a resolved completion target.
*/
- bool get isResolved;
+ CompletionTarget get parsedTarget;
- /**
- * Return the completion target. This determines what part of the parse tree
- * will receive the newly inserted text.
- */
+ @deprecated // Use parsedTarget
CompletionTarget get target;
+ @deprecated // Use parsedTarget.unit or resolvedDeclarationTarget.unit
+ CompilationUnit get unit;
+
/**
- * Cached information from a prior code completion operation.
+ * Return partially resolved completion target where each declarations
+ * in the compilation unit has been bound to corresponding element.
+ * More specifically:
+ *
+ * * The [SimpleIdentifier]s at all declaration sites have been bound
+ * to the element defined by the declaration,
+ * including the constants defined in an 'enum' declaration.
+ * * The types associated with declarations have been resolved, including
+ * the types of superclasses, mixins, interfaces, fields, return types,
+ * parameters, and local variables.
+ * * Directives 'library', 'part' and 'part of' are resolved.
+ * * Imports, exports, publicNamespace, entryPoint,
+ * and exportNamespace are set.
*/
- //DartCompletionCache get cache;
+ Future<CompletionTarget> get resolvedDeclarationTarget;
+}
+/**
+ * An object used to collect suggestions.
+ *
+ * Clients should not extend, implement, or instantiate this class.
+ */
+abstract class DartSuggestionCollector {
/**
- * Return the compilation unit in which the completion was requested.
+ * Add a suggestion.
*/
- CompilationUnit get unit;
+ void addCompletionSuggestion(CompletionSuggestion suggestion);
/**
- * Information about the types of suggestions that should be included.
+ * Add a suggestion based upon the given element.
*/
- //OpType get _optype;
+ void addElementSuggestion(model.Element element,
+ {bool includePrivateElements: false,
+ String prefix,
+ int relevance: DART_RELEVANCE_DEFAULT});
}
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/provisional/completion/dart/completion_target.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698