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

Side by Side Diff: pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart

Issue 2728653004: Default arg support continued (flutter-intellij#553). (Closed)
Patch Set: Review tweaks. Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library services.completion.dart.suggestion.builder; 5 library services.completion.dart.suggestion.builder;
6 6
7 import 'package:analysis_server/src/protocol_server.dart' as protocol; 7 import 'package:analysis_server/src/protocol_server.dart' as protocol;
8 import 'package:analysis_server/src/protocol_server.dart' 8 import 'package:analysis_server/src/protocol_server.dart'
9 hide Element, ElementKind; 9 hide Element, ElementKind;
10 import 'package:analysis_server/src/provisional/completion/dart/completion_dart. dart'; 10 import 'package:analysis_server/src/provisional/completion/dart/completion_dart. dart';
11 import 'package:analysis_server/src/services/completion/dart/utilities.dart';
11 import 'package:analysis_server/src/utilities/documentation.dart'; 12 import 'package:analysis_server/src/utilities/documentation.dart';
12 import 'package:analyzer/dart/element/element.dart'; 13 import 'package:analyzer/dart/element/element.dart';
13 import 'package:analyzer/dart/element/type.dart'; 14 import 'package:analyzer/dart/element/type.dart';
14 import 'package:analyzer/dart/element/visitor.dart'; 15 import 'package:analyzer/dart/element/visitor.dart';
15 import 'package:analyzer/src/generated/source.dart'; 16 import 'package:analyzer/src/generated/source.dart';
16 import 'package:analyzer/src/generated/utilities_dart.dart'; 17 import 'package:analyzer/src/generated/utilities_dart.dart';
17 import 'package:path/path.dart' as path; 18 import 'package:path/path.dart' as path;
18 19
19 const String DYNAMIC = 'dynamic'; 20 const String DYNAMIC = 'dynamic';
20 21
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 if (element is ExecutableElement && element is! PropertyAccessorElement) { 64 if (element is ExecutableElement && element is! PropertyAccessorElement) {
64 suggestion.parameterNames = element.parameters 65 suggestion.parameterNames = element.parameters
65 .map((ParameterElement parameter) => parameter.name) 66 .map((ParameterElement parameter) => parameter.name)
66 .toList(); 67 .toList();
67 suggestion.parameterTypes = 68 suggestion.parameterTypes =
68 element.parameters.map((ParameterElement parameter) { 69 element.parameters.map((ParameterElement parameter) {
69 DartType paramType = parameter.type; 70 DartType paramType = parameter.type;
70 // Gracefully degrade if type not resolved yet 71 // Gracefully degrade if type not resolved yet
71 return paramType != null ? paramType.displayName : 'var'; 72 return paramType != null ? paramType.displayName : 'var';
72 }).toList(); 73 }).toList();
73 suggestion.requiredParameterCount = element.parameters 74
74 .where((ParameterElement parameter) => 75 Iterable<ParameterElement> requiredParameters = element.parameters.where(
75 parameter.parameterKind == ParameterKind.REQUIRED) 76 (ParameterElement param) =>
76 .length; 77 param.parameterKind == ParameterKind.REQUIRED);
77 suggestion.hasNamedParameters = element.parameters.any( 78 suggestion.requiredParameterCount = requiredParameters.length;
78 (ParameterElement parameter) => 79
79 parameter.parameterKind == ParameterKind.NAMED); 80 Iterable<ParameterElement> namedParameters = element.parameters.where(
81 (ParameterElement param) => param.parameterKind == ParameterKind.NAMED);
82 suggestion.hasNamedParameters = namedParameters.isNotEmpty;
83
84 suggestion.defaultArgumentListString =
85 buildDefaultArgList(requiredParameters, namedParameters);
80 } 86 }
81 if (importForSource != null) { 87 if (importForSource != null) {
82 String srcPath = path.dirname(importForSource.fullName); 88 String srcPath = path.dirname(importForSource.fullName);
83 LibraryElement libElem = element.library; 89 LibraryElement libElem = element.library;
84 if (libElem != null) { 90 if (libElem != null) {
85 Source libSource = libElem.source; 91 Source libSource = libElem.source;
86 if (libSource != null) { 92 if (libSource != null) {
87 UriKind uriKind = libSource.uriKind; 93 UriKind uriKind = libSource.uriKind;
88 if (uriKind == UriKind.DART_URI) { 94 if (uriKind == UriKind.DART_URI) {
89 suggestion.importUri = libSource.uri.toString(); 95 suggestion.importUri = libSource.uri.toString();
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 @override 283 @override
278 visitTopLevelVariableElement(TopLevelVariableElement element) { 284 visitTopLevelVariableElement(TopLevelVariableElement element) {
279 if (!typesOnly) { 285 if (!typesOnly) {
280 int relevance = element.library == containingLibrary 286 int relevance = element.library == containingLibrary
281 ? DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE 287 ? DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE
282 : DART_RELEVANCE_DEFAULT; 288 : DART_RELEVANCE_DEFAULT;
283 addSuggestion(element, relevance: relevance); 289 addSuggestion(element, relevance: relevance);
284 } 290 }
285 } 291 }
286 } 292 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698