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

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

Issue 2883363002: Support tear-off completions for named params (in constructors) (flutter-intellij#836) (Closed)
Patch Set: Created 3 years, 7 months 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
« no previous file with comments | « no previous file | pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/services/completion/dart/optype.dart
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/optype.dart b/pkg/analysis_server/lib/src/services/completion/dart/optype.dart
index 975e9107a6a3b1b10071758beb25929651fd09de..08cc0ba4a2ab865ee6eb4032457791c3eaa8ea64 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/optype.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/optype.dart
@@ -14,6 +14,7 @@ import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/ast/token.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
typedef int SuggestionsFilter(DartType dartType, int relevance);
@@ -730,6 +731,25 @@ class _OpTypeAstVisitor extends GeneralizingAstVisitor {
}
};
optype.includeTypeNameSuggestions = true;
+
+ // Check for named parameters in constructor calls.
+ AstNode grandparent = node.parent.parent;
+ if (grandparent is ConstructorReferenceNode) {
+ ConstructorElement element =
+ (grandparent as ConstructorReferenceNode).staticElement;
+ List<ParameterElement> parameters = element.parameters;
+ ParameterElement parameterElement = parameters.firstWhere((e) {
+ if (e is DefaultFieldFormalParameterElementImpl) {
+ return e.field.name == node.name.label.name;
+ }
+ return e.parameterKind == ParameterKind.NAMED &&
+ e.name == node.name.label.name;
+ }, orElse: () => null);
+ // Suggest tear-offs.
+ if (parameterElement?.type is FunctionType) {
+ optype.includeVoidReturnSuggestions = true;
+ }
+ }
}
}
« no previous file with comments | « no previous file | pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698