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

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

Issue 1693933002: rework completion request resolve imports (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sort methods Created 4 years, 10 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 52ae065b3296e2f1c5735888ae2fcf967ad72827..44906892438ec5da49e281fa80e6b39f9fa49b5c 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
@@ -140,6 +140,12 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
InterfaceType _objectType;
/**
+ * A list of resolved [ImportElement]s for the imported libraries
+ * or `null` if not computed.
+ */
+ List<ImportElement> _resolvedImports;
+
+ /**
* The resolved [CompilationUnitElement]s comprising the library
* or `null` if not computed.
*/
@@ -218,24 +224,6 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
_originalRequest.checkAborted();
}
- // For internal use only
- @override
- Future<List<Directive>> resolveDirectives() async {
- checkAborted();
-
- CompilationUnit libUnit;
- if (librarySource != null) {
- // TODO(danrubel) only resolve the directives
- libUnit = await _computeAsync(
- this,
- new LibrarySpecificUnit(librarySource, librarySource),
- RESOLVED_UNIT3,
- performance,
- 'resolve directives');
- }
- return libUnit?.directives;
- }
-
@override
Future resolveExpression(Expression expression) async {
checkAborted();
@@ -274,6 +262,28 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
}
@override
+ Future<List<ImportElement>> resolveImports() async {
+ checkAborted();
+ if (_resolvedImports != null) {
+ return _resolvedImports;
+ }
+ LibraryElement libElem = libraryElement;
+ if (libElem == null) {
+ return null;
+ }
+ _resolvedImports = <ImportElement>[];
+ for (ImportElement importElem in libElem.imports) {
+ if (importElem.importedLibrary.exportNamespace == null) {
+ await _computeAsync(this, importElem.importedLibrary.source,
+ LIBRARY_ELEMENT4, performance, 'resolve imported library');
+ checkAborted();
+ }
+ _resolvedImports.add(importElem);
+ }
+ return _resolvedImports;
+ }
+
+ @override
Future<List<CompilationUnitElement>> resolveUnits() async {
checkAborted();
if (_resolvedUnits != null) {
@@ -334,7 +344,8 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
* based on the given [request]. This method will throw [AbortCompletion]
* if the completion request has been aborted.
*/
- static Future<DartCompletionRequest> from(CompletionRequest request) async {
+ static Future<DartCompletionRequest> from(CompletionRequest request,
+ {ResultDescriptor resultDescriptor}) async {
request.checkAborted();
CompletionPerformance performance =
(request as CompletionRequestImpl).performance;
@@ -364,7 +375,7 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
unit = await _computeAsync(
request,
new LibrarySpecificUnit(libSource, source),
- RESOLVED_UNIT3,
+ resultDescriptor ?? RESOLVED_UNIT3,
performance,
'resolve declarations');
}

Powered by Google App Engine
This is Rietveld 408576698