| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |