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.computer.dart.relevance; | 5 library services.completion.computer.dart.relevance; |
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' show | 8 import 'package:analysis_server/src/protocol_server.dart' |
9 CompletionSuggestion, CompletionSuggestionKind; | 9 show CompletionSuggestion, CompletionSuggestionKind; |
10 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; | 10 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; |
11 import 'package:analyzer/src/generated/ast.dart'; | 11 import 'package:analyzer/src/generated/ast.dart'; |
12 import 'package:analyzer/src/generated/element.dart'; | 12 import 'package:analyzer/src/generated/element.dart'; |
13 | 13 |
14 /** | 14 /** |
15 * A map of <library>.<classname> to an ordered list of method names, | 15 * A map of <library>.<classname> to an ordered list of method names, |
16 * field names, getter names, and named constructors. | 16 * field names, getter names, and named constructors. |
17 * The names are ordered from most relevant to least relevant. | 17 * The names are ordered from most relevant to least relevant. |
18 * Names not listed are considered equally less relevant than those listed. | 18 * Names not listed are considered equally less relevant than those listed. |
19 */ | 19 */ |
20 const Map<String, List<String>> defaultSelectorRelevance = const {// | 20 const Map<String, List<String>> defaultSelectorRelevance = const { |
| 21 // |
21 // Sample implementation which updates the relevance of the following | 22 // Sample implementation which updates the relevance of the following |
22 // new Random().nextInt(...) | 23 // new Random().nextInt(...) |
23 // new Random().nextDouble(...) | 24 // new Random().nextDouble(...) |
24 // new Random().nextBool() - not commonly used thus omitted from list | 25 // new Random().nextBool() - not commonly used thus omitted from list |
25 // Entries should look something like this | 26 // Entries should look something like this |
26 // 'dart.math.Random': const ['nextInt', 'nextDouble'], | 27 // 'dart.math.Random': const ['nextInt', 'nextDouble'], |
27 // 'dart.async.Future': const ['value', 'wait'], | 28 // 'dart.async.Future': const ['value', 'wait'], |
28 }; | 29 }; |
29 | 30 |
30 /** | 31 /** |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 _updateInvocationRelevance(request, type, libElem); | 78 _updateInvocationRelevance(request, type, libElem); |
78 } | 79 } |
79 } | 80 } |
80 } | 81 } |
81 } | 82 } |
82 | 83 |
83 /** | 84 /** |
84 * Adjusts the relevance of all method suggestions based upon the given | 85 * Adjusts the relevance of all method suggestions based upon the given |
85 * target type and library. | 86 * target type and library. |
86 */ | 87 */ |
87 void _updateInvocationRelevance(DartCompletionRequest request, DartType type, | 88 void _updateInvocationRelevance( |
88 LibraryElement libElem) { | 89 DartCompletionRequest request, DartType type, LibraryElement libElem) { |
89 String typeName = type.name; | 90 String typeName = type.name; |
90 List<String> selectors = selectorRelevance['${libElem.name}.${typeName}']; | 91 List<String> selectors = selectorRelevance['${libElem.name}.${typeName}']; |
91 if (selectors != null) { | 92 if (selectors != null) { |
92 for (CompletionSuggestion suggestion in request.suggestions) { | 93 for (CompletionSuggestion suggestion in request.suggestions) { |
93 protocol.Element element = suggestion.element; | 94 protocol.Element element = suggestion.element; |
94 if (element != null && | 95 if (element != null && |
95 (element.kind == protocol.ElementKind.CONSTRUCTOR || | 96 (element.kind == protocol.ElementKind.CONSTRUCTOR || |
96 element.kind == protocol.ElementKind.FIELD || | 97 element.kind == protocol.ElementKind.FIELD || |
97 element.kind == protocol.ElementKind.GETTER || | 98 element.kind == protocol.ElementKind.GETTER || |
98 element.kind == protocol.ElementKind.METHOD || | 99 element.kind == protocol.ElementKind.METHOD || |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 DartType visitPropertyAccess(PropertyAccess node) { | 152 DartType visitPropertyAccess(PropertyAccess node) { |
152 if (node.propertyName == entity) { | 153 if (node.propertyName == entity) { |
153 Expression target = node.realTarget; | 154 Expression target = node.realTarget; |
154 if (target != null) { | 155 if (target != null) { |
155 return target.bestType; | 156 return target.bestType; |
156 } | 157 } |
157 } | 158 } |
158 return null; | 159 return null; |
159 } | 160 } |
160 } | 161 } |
OLD | NEW |