| Index: pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart b/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
|
| index e2a229bdbd5caace1b9f335ef901f6adf921c885..b7d2c64e49524989e84c3e3e683e32c898d1eda6 100644
|
| --- a/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
|
| +++ b/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
|
| @@ -7,6 +7,7 @@ library services.completion.computer.dart.invocation;
|
| import 'dart:async';
|
|
|
| import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
|
| +import 'package:analysis_server/src/services/completion/optype_ast_visitor.dart';
|
| import 'package:analysis_server/src/services/completion/suggestion_builder.dart';
|
| import 'package:analyzer/src/generated/ast.dart';
|
| import 'package:analyzer/src/generated/element.dart';
|
| @@ -23,10 +24,19 @@ class InvocationComputer extends DartCompletionComputer {
|
|
|
| @override
|
| bool computeFast(DartCompletionRequest request) {
|
| - builder = request.node.accept(new _InvocationAstVisitor(request));
|
| - if (builder != null) {
|
| - return builder.computeFast(request.node);
|
| +
|
| + // Determine the type of suggestions to be made
|
| + OpTypeAstVisitor opTypeVisitor = new OpTypeAstVisitor(request.offset);
|
| + request.node.accept(opTypeVisitor);
|
| +
|
| + // Build the suggestions
|
| + if (opTypeVisitor.includeInvocationSuggestions) {
|
| + builder = request.node.accept(new _InvocationAstVisitor(request));
|
| + if (builder != null) {
|
| + return builder.computeFast(request.node);
|
| + }
|
| }
|
| +
|
| return true;
|
| }
|
|
|
| @@ -83,26 +93,12 @@ class _InvocationAstVisitor extends GeneralizingAstVisitor<SuggestionBuilder> {
|
| visitConstructorName(ConstructorName node) {
|
| // some PrefixedIdentifier nodes are transformed into
|
| // ConstructorName nodes during the resolution process.
|
| - Token period = node.period;
|
| - if (period != null && request.offset > period.offset) {
|
| - TypeName type = node.type;
|
| - if (type != null) {
|
| - SimpleIdentifier prefix = type.name;
|
| - if (prefix != null) {
|
| - return new _PrefixedIdentifierSuggestionBuilder(request);
|
| - }
|
| - }
|
| - }
|
| - return null;
|
| + return new _PrefixedIdentifierSuggestionBuilder(request);
|
| }
|
|
|
| @override
|
| SuggestionBuilder visitMethodInvocation(MethodInvocation node) {
|
| - Token period = node.period;
|
| - if (period == null || period.offset < request.offset) {
|
| - return new _ExpressionSuggestionBuilder(request);
|
| - }
|
| - return null;
|
| + return new _ExpressionSuggestionBuilder(request);
|
| }
|
|
|
| @override
|
| @@ -114,23 +110,12 @@ class _InvocationAstVisitor extends GeneralizingAstVisitor<SuggestionBuilder> {
|
| SuggestionBuilder visitPrefixedIdentifier(PrefixedIdentifier node) {
|
| // some PrefixedIdentifier nodes are transformed into
|
| // ConstructorName nodes during the resolution process.
|
| - Token period = node.period;
|
| - if (period != null && request.offset > period.offset) {
|
| - SimpleIdentifier prefix = node.prefix;
|
| - if (prefix != null) {
|
| - return new _PrefixedIdentifierSuggestionBuilder(request);
|
| - }
|
| - }
|
| - return null;
|
| + return new _PrefixedIdentifierSuggestionBuilder(request);
|
| }
|
|
|
| @override
|
| SuggestionBuilder visitPropertyAccess(PropertyAccess node) {
|
| - Token operator = node.operator;
|
| - if (operator != null && operator.offset < request.offset) {
|
| - return new _ExpressionSuggestionBuilder(request);
|
| - }
|
| - return null;
|
| + return new _ExpressionSuggestionBuilder(request);
|
| }
|
|
|
| @override
|
|
|