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

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

Issue 804323002: refactor duplicate code into single visitor (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years 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/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

Powered by Google App Engine
This is Rietveld 408576698