| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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.suggestion.builder; | 5 library services.completion.suggestion.builder; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol_server.dart' as protocol; | 9 import 'package:analysis_server/src/protocol_server.dart' as protocol; |
| 10 import 'package:analysis_server/src/protocol_server.dart' hide Element, | 10 import 'package:analysis_server/src/protocol_server.dart' hide Element, |
| 11 ElementKind; | 11 ElementKind; |
| 12 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; | 12 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; |
| 13 import 'package:analyzer/src/generated/ast.dart'; | 13 import 'package:analyzer/src/generated/ast.dart'; |
| 14 import 'package:analyzer/src/generated/element.dart'; | 14 import 'package:analyzer/src/generated/element.dart'; |
| 15 import 'package:analyzer/src/generated/utilities_dart.dart'; |
| 15 | 16 |
| 16 /** | 17 /** |
| 17 * Create a suggestion based upon the given imported element. | 18 * Create a suggestion based upon the given imported element. |
| 18 */ | 19 */ |
| 19 CompletionSuggestion createElementSuggestion(Element element, | 20 CompletionSuggestion createElementSuggestion(Element element, |
| 20 {CompletionRelevance relevance: CompletionRelevance.DEFAULT}) { | 21 {CompletionRelevance relevance: CompletionRelevance.DEFAULT}) { |
| 21 String completion = element.displayName; | 22 String completion = element.displayName; |
| 22 CompletionSuggestion suggestion = new CompletionSuggestion( | 23 CompletionSuggestion suggestion = new CompletionSuggestion( |
| 23 CompletionSuggestionKind.INVOCATION, | 24 CompletionSuggestionKind.INVOCATION, |
| 24 element.isDeprecated ? CompletionRelevance.LOW : relevance, | 25 element.isDeprecated ? CompletionRelevance.LOW : relevance, |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 } | 377 } |
| 377 if (enclosingElement != null) { | 378 if (enclosingElement != null) { |
| 378 suggestion.declaringType = enclosingElement.displayName; | 379 suggestion.declaringType = enclosingElement.displayName; |
| 379 } | 380 } |
| 380 if (type != null) { | 381 if (type != null) { |
| 381 String typeName = type.displayName; | 382 String typeName = type.displayName; |
| 382 if (typeName != null && typeName.length > 0 && typeName != 'dynamic') { | 383 if (typeName != null && typeName.length > 0 && typeName != 'dynamic') { |
| 383 suggestion.returnType = typeName; | 384 suggestion.returnType = typeName; |
| 384 } | 385 } |
| 385 } | 386 } |
| 387 if (element is ExecutableElement && element is! PropertyAccessorElement) { |
| 388 suggestion.parameterNames = element.parameters.map( |
| 389 (ParameterElement parameter) => parameter.name).toList(); |
| 390 suggestion.parameterTypes = element.parameters.map( |
| 391 (ParameterElement parameter) => parameter.type.displayName).toList(); |
| 392 suggestion.requiredParameterCount = element.parameters.where( |
| 393 (ParameterElement parameter) => |
| 394 parameter.parameterKind == ParameterKind.REQUIRED).length; |
| 395 suggestion.hasNamedParameters = element.parameters.any( |
| 396 (ParameterElement parameter) => parameter.parameterKind == ParameterKi
nd.NAMED); |
| 397 } |
| 386 request.suggestions.add(suggestion); | 398 request.suggestions.add(suggestion); |
| 387 } | 399 } |
| 388 } | 400 } |
| OLD | NEW |