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 eb4cbe864ec11615bdfca11f5dbc3f7699e2b8ec..4a7b792c20d44180e66bf41ceb9235fdec98d808 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 |
@@ -13,17 +13,18 @@ import 'package:analysis_server/src/provisional/completion/dart/completion_dart. |
import 'package:analysis_server/src/provisional/completion/dart/completion_plugin.dart'; |
import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart'; |
import 'package:analysis_server/src/services/completion/completion_core.dart'; |
+import 'package:analysis_server/src/services/completion/optype.dart'; |
import 'package:analysis_server/src/services/search/search_engine.dart'; |
+import 'package:analyzer/dart/element/element.dart'; |
+import 'package:analyzer/dart/element/type.dart'; |
import 'package:analyzer/file_system/file_system.dart'; |
import 'package:analyzer/src/context/context.dart' |
show AnalysisFutureHelper, AnalysisContextImpl; |
import 'package:analyzer/src/generated/ast.dart'; |
-import 'package:analyzer/src/generated/element.dart'; |
import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; |
import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/task/dart.dart'; |
import 'package:analyzer/task/dart.dart'; |
-import 'package:analysis_server/src/services/completion/optype.dart'; |
/** |
* [DartCompletionManager] determines if a completion request is Dart specific |
@@ -54,40 +55,20 @@ class DartCompletionManager implements CompletionContributor { |
class DartCompletionRequestImpl extends CompletionRequestImpl |
implements DartCompletionRequest { |
/** |
- * Return a [Future] that completes with a newly created completion request |
- * based on the given [request]. |
+ * The [DartType] for Object in dart:core |
*/ |
- static Future<DartCompletionRequest> from(CompletionRequest request) async { |
- Source source = request.source; |
- AnalysisContext context = request.context; |
- CompilationUnit unit = request.context.computeResult(source, PARSED_UNIT); |
+ InterfaceType _objectType; |
- Source libSource; |
- if (unit.directives.any((d) => d is PartOfDirective)) { |
- List<Source> libraries = context.getLibrariesContaining(source); |
- if (libraries.isNotEmpty) { |
- libSource = libraries[0]; |
- } |
- } else { |
- libSource = source; |
- } |
+ @override |
+ Expression dotTarget; |
- // Most (all?) contributors need declarations in scope to be resolved |
- if (libSource != null) { |
- unit = await new AnalysisFutureHelper<CompilationUnit>(context, |
- new LibrarySpecificUnit(libSource, source), RESOLVED_UNIT3) |
- .computeAsync(); |
- } |
+ @override |
+ Source librarySource; |
- return new DartCompletionRequestImpl._( |
- request.context, |
- request.resourceProvider, |
- request.searchEngine, |
- libSource, |
- request.source, |
- request.offset, |
- unit); |
- } |
+ OpType _opType; |
+ |
+ @override |
+ CompletionTarget target; |
DartCompletionRequestImpl._( |
AnalysisContext context, |
@@ -101,22 +82,6 @@ class DartCompletionRequestImpl extends CompletionRequestImpl |
_updateTargets(unit); |
} |
- /** |
- * The [DartType] for Object in dart:core |
- */ |
- InterfaceType _objectType; |
- |
- @override |
- Expression dotTarget; |
- |
- @override |
- Source librarySource; |
- |
- OpType _opType; |
- |
- @override |
- CompletionTarget target; |
- |
@override |
bool get includeIdentifiers { |
opType; // <<< ensure _opType is initialized |
@@ -150,7 +115,6 @@ class DartCompletionRequestImpl extends CompletionRequestImpl |
return _objectType; |
} |
- // For internal use only |
OpType get opType { |
if (_opType == null) { |
_opType = new OpType.forCompletion(target, offset); |
@@ -158,6 +122,7 @@ class DartCompletionRequestImpl extends CompletionRequestImpl |
return _opType; |
} |
+ // For internal use only |
@override |
Future<List<Directive>> resolveDirectives() async { |
CompilationUnit libUnit; |
@@ -235,4 +200,40 @@ class DartCompletionRequestImpl extends CompletionRequestImpl |
} |
} |
} |
+ |
+ /** |
+ * Return a [Future] that completes with a newly created completion request |
+ * based on the given [request]. |
+ */ |
+ static Future<DartCompletionRequest> from(CompletionRequest request) async { |
+ Source source = request.source; |
+ AnalysisContext context = request.context; |
+ CompilationUnit unit = request.context.computeResult(source, PARSED_UNIT); |
+ |
+ Source libSource; |
+ if (unit.directives.any((d) => d is PartOfDirective)) { |
+ List<Source> libraries = context.getLibrariesContaining(source); |
+ if (libraries.isNotEmpty) { |
+ libSource = libraries[0]; |
+ } |
+ } else { |
+ libSource = source; |
+ } |
+ |
+ // Most (all?) contributors need declarations in scope to be resolved |
+ if (libSource != null) { |
+ unit = await new AnalysisFutureHelper<CompilationUnit>(context, |
+ new LibrarySpecificUnit(libSource, source), RESOLVED_UNIT3) |
+ .computeAsync(); |
+ } |
+ |
+ return new DartCompletionRequestImpl._( |
+ request.context, |
+ request.resourceProvider, |
+ request.searchEngine, |
+ libSource, |
+ request.source, |
+ request.offset, |
+ unit); |
+ } |
} |