| Index: pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
|
| index 6a8c367aa39e07ea48c39108f1eda4908a231305..46514910e3633f3e91134c24bb54d7482e24554b 100644
|
| --- a/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
|
| +++ b/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
|
| @@ -10,6 +10,7 @@ import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
|
| import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
|
| import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
|
| import 'package:analysis_server/src/services/completion/dart/optype.dart';
|
| +import 'package:analyzer/dart/ast/ast.dart';
|
| import 'package:analyzer/dart/element/element.dart';
|
| import 'package:analyzer/src/generated/resolver.dart';
|
|
|
| @@ -53,6 +54,20 @@ class ImportedReferenceContributor extends DartCompletionContributor {
|
| return EMPTY_LIST;
|
| }
|
|
|
| + // If the target is in an expression
|
| + // then resolve the outermost/entire expression
|
| + AstNode node = request.target.containingNode;
|
| + if (node is Expression) {
|
| + while (node.parent is Expression) {
|
| + node = node.parent;
|
| + }
|
| + await request.resolveExpression(node);
|
| +
|
| + // Discard any cached target information
|
| + // because it may have changed as a result of the resolution
|
| + node = request.target.containingNode;
|
| + }
|
| +
|
| this.request = request;
|
| this.optype = (request as DartCompletionRequestImpl).opType;
|
| List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
|
|
|