| 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);
|
| + }
|
| }
|
|
|