| 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 test.services.completion.util; | 5 library test.services.completion.util; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol.dart' as protocol show Element, | 9 import 'package:analysis_server/src/protocol.dart' as protocol show Element, |
| 10 ElementKind; | 10 ElementKind; |
| 11 import 'package:analysis_server/src/protocol.dart' hide Element; | 11 import 'package:analysis_server/src/protocol.dart' hide Element, 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:analysis_server/src/services/completion/imported_computer.dart'; | 13 import 'package:analysis_server/src/services/completion/imported_computer.dart'; |
| 14 import 'package:analysis_server/src/services/completion/invocation_computer.dart
'; | 14 import 'package:analysis_server/src/services/completion/invocation_computer.dart
'; |
| 15 import 'package:analysis_server/src/services/completion/local_computer.dart'; | 15 import 'package:analysis_server/src/services/completion/local_computer.dart'; |
| 16 import 'package:analysis_server/src/services/index/index.dart'; | 16 import 'package:analysis_server/src/services/index/index.dart'; |
| 17 import 'package:analysis_server/src/services/index/local_memory_index.dart'; | 17 import 'package:analysis_server/src/services/index/local_memory_index.dart'; |
| 18 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; | 18 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; |
| 19 import 'package:analyzer/src/generated/ast.dart'; | 19 import 'package:analyzer/src/generated/ast.dart'; |
| 20 import 'package:analyzer/src/generated/element.dart'; | 20 import 'package:analyzer/src/generated/element.dart'; |
| 21 import 'package:analyzer/src/generated/engine.dart'; | 21 import 'package:analyzer/src/generated/engine.dart'; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 CompletionSuggestion suggestion = request.suggestions.firstWhere( | 65 CompletionSuggestion suggestion = request.suggestions.firstWhere( |
| 66 (cs) => cs.completion == completion, | 66 (cs) => cs.completion == completion, |
| 67 orElse: () => null); | 67 orElse: () => null); |
| 68 if (suggestion != null) { | 68 if (suggestion != null) { |
| 69 _failedCompletion( | 69 _failedCompletion( |
| 70 'did not expect completion: $completion\n $suggestion'); | 70 'did not expect completion: $completion\n $suggestion'); |
| 71 } | 71 } |
| 72 return null; | 72 return null; |
| 73 } | 73 } |
| 74 | 74 |
| 75 CompletionSuggestion assertSuggest(CompletionSuggestionKind kind, | 75 CompletionSuggestion assertSuggest(String completion, |
| 76 String completion, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, | 76 {CompletionSuggestionKind csKind: CompletionSuggestionKind.INVOCATION, |
| 77 bool isDeprecated = false, bool isPotential = false]) { | 77 CompletionRelevance relevance: CompletionRelevance.DEFAULT, |
| 78 protocol.ElementKind elemKind: null, bool isDeprecated: false, bool isPote
ntial: |
| 79 false}) { |
| 78 CompletionSuggestion cs; | 80 CompletionSuggestion cs; |
| 79 request.suggestions.forEach((s) { | 81 request.suggestions.forEach((s) { |
| 80 if (s.completion == completion && s.kind == kind) { | 82 if (s.completion == completion && s.kind == csKind) { |
| 81 if (cs == null) { | 83 protocol.Element element = s.element; |
| 82 cs = s; | 84 if (elemKind == null || (element != null && elemKind == element.kind)) { |
| 83 } else { | 85 if (cs == null) { |
| 84 _failedCompletion( | 86 cs = s; |
| 85 'expected exactly one $completion', | 87 } else { |
| 86 request.suggestions.where((s) => s.completion == completion)); | 88 _failedCompletion( |
| 89 'expected exactly one $completion', |
| 90 request.suggestions.where((s) => s.completion == completion)); |
| 91 } |
| 87 } | 92 } |
| 88 } | 93 } |
| 89 }); | 94 }); |
| 90 if (cs == null) { | 95 if (cs == null) { |
| 91 _failedCompletion('expected $completion $kind', request.suggestions); | 96 _failedCompletion('expected $completion $csKind', request.suggestions); |
| 92 } | 97 } |
| 93 expect(cs.kind, equals(kind)); | 98 expect(cs.kind, equals(csKind)); |
| 94 expect(cs.relevance, equals(relevance)); | 99 expect(cs.relevance, equals(relevance)); |
| 95 expect(cs.selectionOffset, equals(completion.length)); | 100 expect(cs.selectionOffset, equals(completion.length)); |
| 96 expect(cs.selectionLength, equals(0)); | 101 expect(cs.selectionLength, equals(0)); |
| 97 expect(cs.isDeprecated, equals(isDeprecated)); | 102 expect(cs.isDeprecated, equals(isDeprecated)); |
| 98 expect(cs.isPotential, equals(isPotential)); | 103 expect(cs.isPotential, equals(isPotential)); |
| 99 return cs; | 104 return cs; |
| 100 } | 105 } |
| 101 | 106 |
| 102 CompletionSuggestion assertSuggestClass(String name, | 107 CompletionSuggestion assertSuggestClass(String name, |
| 103 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 108 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 109 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 104 CompletionSuggestion cs = | 110 CompletionSuggestion cs = |
| 105 assertSuggest(CompletionSuggestionKind.CLASS, name, relevance); | 111 assertSuggest(name, csKind: kind, relevance: relevance); |
| 106 protocol.Element element = cs.element; | 112 protocol.Element element = cs.element; |
| 107 expect(element, isNotNull); | 113 expect(element, isNotNull); |
| 108 expect(element.kind, equals(protocol.ElementKind.CLASS)); | 114 expect(element.kind, equals(protocol.ElementKind.CLASS)); |
| 109 expect(element.name, equals(name)); | 115 expect(element.name, equals(name)); |
| 110 expect(element.parameters, isNull); | 116 expect(element.parameters, isNull); |
| 111 expect(element.returnType, isNull); | 117 expect(element.returnType, isNull); |
| 112 return cs; | 118 return cs; |
| 113 } | 119 } |
| 114 | 120 |
| 115 CompletionSuggestion assertSuggestClassTypeAlias(String name, | 121 CompletionSuggestion assertSuggestClassTypeAlias(String name, |
| 116 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 122 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 123 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 117 CompletionSuggestion cs = | 124 CompletionSuggestion cs = |
| 118 assertSuggest(CompletionSuggestionKind.CLASS_ALIAS, name, relevance); | 125 assertSuggest(name, csKind: kind, relevance: relevance); |
| 119 protocol.Element element = cs.element; | 126 protocol.Element element = cs.element; |
| 120 expect(element, isNotNull); | 127 expect(element, isNotNull); |
| 121 expect(element.kind, equals(protocol.ElementKind.CLASS_TYPE_ALIAS)); | 128 expect(element.kind, equals(protocol.ElementKind.CLASS_TYPE_ALIAS)); |
| 122 expect(element.name, equals(name)); | 129 expect(element.name, equals(name)); |
| 123 expect(element.parameters, isNull); | 130 expect(element.parameters, isNull); |
| 124 expect(element.returnType, isNull); | 131 expect(element.returnType, isNull); |
| 125 return cs; | 132 return cs; |
| 126 } | 133 } |
| 127 | 134 |
| 128 CompletionSuggestion assertSuggestFunction(String name, String returnType, | 135 CompletionSuggestion assertSuggestFunction(String name, String returnType, |
| 129 bool isDeprecated, [CompletionRelevance relevance = | 136 bool isDeprecated, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, |
| 130 CompletionRelevance.DEFAULT]) { | 137 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 131 CompletionSuggestion cs = assertSuggest( | 138 CompletionSuggestion cs = assertSuggest( |
| 132 CompletionSuggestionKind.FUNCTION, | |
| 133 name, | 139 name, |
| 134 relevance, | 140 csKind: kind, |
| 135 isDeprecated); | 141 relevance: relevance, |
| 142 isDeprecated: isDeprecated); |
| 136 expect(cs.returnType, equals(returnType)); | 143 expect(cs.returnType, equals(returnType)); |
| 137 protocol.Element element = cs.element; | 144 protocol.Element element = cs.element; |
| 138 expect(element, isNotNull); | 145 expect(element, isNotNull); |
| 139 expect(element.kind, equals(protocol.ElementKind.FUNCTION)); | 146 expect(element.kind, equals(protocol.ElementKind.FUNCTION)); |
| 140 expect(element.name, equals(name)); | 147 expect(element.name, equals(name)); |
| 141 expect(element.isDeprecated, equals(isDeprecated)); | 148 expect(element.isDeprecated, equals(isDeprecated)); |
| 142 String param = element.parameters; | 149 String param = element.parameters; |
| 143 expect(param, isNotNull); | 150 expect(param, isNotNull); |
| 144 expect(param[0], equals('(')); | 151 expect(param[0], equals('(')); |
| 145 expect(param[param.length - 1], equals(')')); | 152 expect(param[param.length - 1], equals(')')); |
| 146 expect( | 153 expect( |
| 147 element.returnType, | 154 element.returnType, |
| 148 equals(returnType != null ? returnType : 'dynamic')); | 155 equals(returnType != null ? returnType : 'dynamic')); |
| 149 return cs; | 156 return cs; |
| 150 } | 157 } |
| 151 | 158 |
| 152 CompletionSuggestion assertSuggestFunctionTypeAlias(String name, | 159 CompletionSuggestion assertSuggestFunctionTypeAlias(String name, |
| 153 String returnType, bool isDeprecated, [CompletionRelevance relevance = | 160 String returnType, bool isDeprecated, [CompletionRelevance relevance = |
| 154 CompletionRelevance.DEFAULT]) { | 161 CompletionRelevance.DEFAULT, CompletionSuggestionKind kind = |
| 162 CompletionSuggestionKind.INVOCATION]) { |
| 155 CompletionSuggestion cs = assertSuggest( | 163 CompletionSuggestion cs = assertSuggest( |
| 156 CompletionSuggestionKind.FUNCTION_TYPE_ALIAS, | |
| 157 name, | 164 name, |
| 158 relevance, | 165 csKind: kind, |
| 159 isDeprecated); | 166 relevance: relevance, |
| 167 isDeprecated: isDeprecated); |
| 160 expect(cs.returnType, equals(returnType)); | 168 expect(cs.returnType, equals(returnType)); |
| 161 protocol.Element element = cs.element; | 169 protocol.Element element = cs.element; |
| 162 expect(element, isNotNull); | 170 expect(element, isNotNull); |
| 163 expect(element.kind, equals(protocol.ElementKind.FUNCTION_TYPE_ALIAS)); | 171 expect(element.kind, equals(protocol.ElementKind.FUNCTION_TYPE_ALIAS)); |
| 164 expect(element.name, equals(name)); | 172 expect(element.name, equals(name)); |
| 165 expect(element.isDeprecated, equals(isDeprecated)); | 173 expect(element.isDeprecated, equals(isDeprecated)); |
| 166 // TODO (danrubel) Determine why params are null | 174 // TODO (danrubel) Determine why params are null |
| 167 // String param = element.parameters; | 175 // String param = element.parameters; |
| 168 // expect(param, isNotNull); | 176 // expect(param, isNotNull); |
| 169 // expect(param[0], equals('(')); | 177 // expect(param[0], equals('(')); |
| 170 // expect(param[param.length - 1], equals(')')); | 178 // expect(param[param.length - 1], equals(')')); |
| 171 // TODO (danrubel) Determine why return type is null | 179 // TODO (danrubel) Determine why return type is null |
| 172 // expect( | 180 // expect( |
| 173 // element.returnType, | 181 // element.returnType, |
| 174 // equals(returnType != null ? returnType : 'dynamic')); | 182 // equals(returnType != null ? returnType : 'dynamic')); |
| 175 return cs; | 183 return cs; |
| 176 } | 184 } |
| 177 | 185 |
| 178 CompletionSuggestion assertSuggestGetter(String name, String returnType, | 186 CompletionSuggestion assertSuggestGetter(String name, String returnType, |
| 179 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 187 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 180 CompletionSuggestion cs = | 188 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 181 assertSuggest(CompletionSuggestionKind.GETTER, name, relevance); | 189 CompletionSuggestion cs = assertSuggest( |
| 190 name, |
| 191 csKind: kind, |
| 192 relevance: relevance, |
| 193 elemKind: protocol.ElementKind.GETTER); |
| 182 expect(cs.returnType, equals(returnType)); | 194 expect(cs.returnType, equals(returnType)); |
| 183 protocol.Element element = cs.element; | 195 protocol.Element element = cs.element; |
| 184 expect(element, isNotNull); | 196 expect(element, isNotNull); |
| 185 expect(element.kind, equals(protocol.ElementKind.GETTER)); | 197 expect(element.kind, equals(protocol.ElementKind.GETTER)); |
| 186 expect(element.name, equals(name)); | 198 expect(element.name, equals(name)); |
| 187 //TODO (danrubel) getter should have parameters | 199 //TODO (danrubel) getter should have parameters |
| 188 // but not used in code completion | 200 // but not used in code completion |
| 189 //expect(element.parameters, '()'); | 201 //expect(element.parameters, '()'); |
| 190 expect( | 202 expect( |
| 191 element.returnType, | 203 element.returnType, |
| 192 equals(returnType != null ? returnType : 'dynamic')); | 204 equals(returnType != null ? returnType : 'dynamic')); |
| 193 return cs; | 205 return cs; |
| 194 } | 206 } |
| 195 | 207 |
| 196 CompletionSuggestion assertSuggestLibraryPrefix(String prefix, | 208 CompletionSuggestion assertSuggestLibraryPrefix(String prefix, |
| 197 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 209 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 210 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 198 // Library prefix should only be suggested by ImportedComputer | 211 // Library prefix should only be suggested by ImportedComputer |
| 199 if (computer is ImportedComputer) { | 212 if (computer is ImportedComputer) { |
| 200 CompletionSuggestion cs = | 213 CompletionSuggestion cs = |
| 201 assertSuggest(CompletionSuggestionKind.LIBRARY_PREFIX, prefix, relevan
ce); | 214 assertSuggest(prefix, csKind: kind, relevance: relevance); |
| 202 protocol.Element element = cs.element; | 215 protocol.Element element = cs.element; |
| 203 expect(element, isNotNull); | 216 expect(element, isNotNull); |
| 204 expect(element.kind, equals(protocol.ElementKind.LIBRARY)); | 217 expect(element.kind, equals(protocol.ElementKind.LIBRARY)); |
| 205 expect(element.parameters, isNull); | 218 expect(element.parameters, isNull); |
| 206 expect(element.returnType, isNull); | 219 expect(element.returnType, isNull); |
| 207 return cs; | 220 return cs; |
| 208 } else { | 221 } else { |
| 209 return assertNotSuggested(prefix); | 222 return assertNotSuggested(prefix); |
| 210 } | 223 } |
| 211 } | 224 } |
| 212 | 225 |
| 213 CompletionSuggestion assertSuggestLocalVariable(String name, | 226 CompletionSuggestion assertSuggestLocalVariable(String name, |
| 214 String returnType, [CompletionRelevance relevance = | 227 String returnType, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, |
| 215 CompletionRelevance.DEFAULT]) { | 228 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 216 // Local variables should only be suggested by LocalComputer | 229 // Local variables should only be suggested by LocalComputer |
| 217 if (computer is LocalComputer) { | 230 if (computer is LocalComputer) { |
| 218 CompletionSuggestion cs = | 231 CompletionSuggestion cs = |
| 219 assertSuggest(CompletionSuggestionKind.LOCAL_VARIABLE, name, relevance
); | 232 assertSuggest(name, csKind: kind, relevance: relevance); |
| 220 expect(cs.returnType, equals(returnType)); | 233 expect(cs.returnType, equals(returnType)); |
| 221 protocol.Element element = cs.element; | 234 protocol.Element element = cs.element; |
| 222 expect(element, isNotNull); | 235 expect(element, isNotNull); |
| 223 expect(element.kind, equals(protocol.ElementKind.LOCAL_VARIABLE)); | 236 expect(element.kind, equals(protocol.ElementKind.LOCAL_VARIABLE)); |
| 224 expect(element.name, equals(name)); | 237 expect(element.name, equals(name)); |
| 225 expect(element.parameters, isNull); | 238 expect(element.parameters, isNull); |
| 226 expect( | 239 expect( |
| 227 element.returnType, | 240 element.returnType, |
| 228 equals(returnType != null ? returnType : 'dynamic')); | 241 equals(returnType != null ? returnType : 'dynamic')); |
| 229 return cs; | 242 return cs; |
| 230 } else { | 243 } else { |
| 231 return assertNotSuggested(name); | 244 return assertNotSuggested(name); |
| 232 } | 245 } |
| 233 } | 246 } |
| 234 | 247 |
| 235 CompletionSuggestion assertSuggestMethod(String name, String declaringType, | 248 CompletionSuggestion assertSuggestMethod(String name, String declaringType, |
| 236 String returnType, [CompletionRelevance relevance = | 249 String returnType, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, |
| 237 CompletionRelevance.DEFAULT]) { | 250 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 238 CompletionSuggestion cs = | 251 CompletionSuggestion cs = |
| 239 assertSuggest(CompletionSuggestionKind.METHOD, name, relevance); | 252 assertSuggest(name, csKind: kind, relevance: relevance); |
| 240 expect(cs.declaringType, equals(declaringType)); | 253 expect(cs.declaringType, equals(declaringType)); |
| 241 expect(cs.returnType, equals(returnType)); | 254 expect(cs.returnType, equals(returnType)); |
| 242 protocol.Element element = cs.element; | 255 protocol.Element element = cs.element; |
| 243 expect(element, isNotNull); | 256 expect(element, isNotNull); |
| 244 expect(element.kind, equals(protocol.ElementKind.METHOD)); | 257 expect(element.kind, equals(protocol.ElementKind.METHOD)); |
| 245 expect(element.name, equals(name)); | 258 expect(element.name, equals(name)); |
| 246 String param = element.parameters; | 259 String param = element.parameters; |
| 247 expect(param, isNotNull); | 260 expect(param, isNotNull); |
| 248 expect(param[0], equals('(')); | 261 expect(param[0], equals('(')); |
| 249 expect(param[param.length - 1], equals(')')); | 262 expect(param[param.length - 1], equals(')')); |
| 250 expect( | 263 expect( |
| 251 element.returnType, | 264 element.returnType, |
| 252 equals(returnType != null ? returnType : 'dynamic')); | 265 equals(returnType != null ? returnType : 'dynamic')); |
| 253 return cs; | 266 return cs; |
| 254 } | 267 } |
| 255 | 268 |
| 256 CompletionSuggestion assertSuggestNamedConstructor(String name, | 269 CompletionSuggestion assertSuggestNamedConstructor(String name, |
| 257 String returnType, [CompletionRelevance relevance = | 270 String returnType, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, |
| 258 CompletionRelevance.DEFAULT]) { | 271 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 259 if (computer is InvocationComputer) { | 272 if (computer is InvocationComputer) { |
| 260 CompletionSuggestion cs = | 273 CompletionSuggestion cs = |
| 261 assertSuggest(CompletionSuggestionKind.CONSTRUCTOR, name, relevance); | 274 assertSuggest(name, csKind: kind, relevance: relevance); |
| 262 protocol.Element element = cs.element; | 275 protocol.Element element = cs.element; |
| 263 expect(element, isNotNull); | 276 expect(element, isNotNull); |
| 264 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); | 277 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); |
| 265 expect(element.name, equals(name)); | 278 expect(element.name, equals(name)); |
| 266 String param = element.parameters; | 279 String param = element.parameters; |
| 267 expect(param, isNotNull); | 280 expect(param, isNotNull); |
| 268 expect(param[0], equals('(')); | 281 expect(param[0], equals('(')); |
| 269 expect(param[param.length - 1], equals(')')); | 282 expect(param[param.length - 1], equals(')')); |
| 270 expect(element.returnType, equals(returnType)); | 283 expect(element.returnType, equals(returnType)); |
| 271 return cs; | 284 return cs; |
| 272 } else { | 285 } else { |
| 273 return assertNotSuggested(name); | 286 return assertNotSuggested(name); |
| 274 } | 287 } |
| 275 } | 288 } |
| 276 | 289 |
| 277 CompletionSuggestion assertSuggestParameter(String name, String returnType, | 290 CompletionSuggestion assertSuggestParameter(String name, String returnType, |
| 278 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 291 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 292 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 279 // Parameters should only be suggested by LocalComputer | 293 // Parameters should only be suggested by LocalComputer |
| 280 if (computer is LocalComputer) { | 294 if (computer is LocalComputer) { |
| 281 CompletionSuggestion cs = | 295 CompletionSuggestion cs = |
| 282 assertSuggest(CompletionSuggestionKind.PARAMETER, name, relevance); | 296 assertSuggest(name, csKind: kind, relevance: relevance); |
| 283 expect(cs.returnType, equals(returnType)); | 297 expect(cs.returnType, equals(returnType)); |
| 284 protocol.Element element = cs.element; | 298 protocol.Element element = cs.element; |
| 285 expect(element, isNotNull); | 299 expect(element, isNotNull); |
| 286 expect(element.kind, equals(protocol.ElementKind.PARAMETER)); | 300 expect(element.kind, equals(protocol.ElementKind.PARAMETER)); |
| 287 expect(element.name, equals(name)); | 301 expect(element.name, equals(name)); |
| 288 expect(element.parameters, isNull); | 302 expect(element.parameters, isNull); |
| 289 expect( | 303 expect( |
| 290 element.returnType, | 304 element.returnType, |
| 291 equals(returnType != null ? returnType : 'dynamic')); | 305 equals(returnType != null ? returnType : 'dynamic')); |
| 292 return cs; | 306 return cs; |
| 293 } else { | 307 } else { |
| 294 return assertNotSuggested(name); | 308 return assertNotSuggested(name); |
| 295 } | 309 } |
| 296 } | 310 } |
| 297 | 311 |
| 298 CompletionSuggestion assertSuggestSetter(String name, | 312 CompletionSuggestion assertSuggestSetter(String name, |
| 299 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 313 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 300 CompletionSuggestion cs = | 314 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 301 assertSuggest(CompletionSuggestionKind.SETTER, name, relevance); | 315 CompletionSuggestion cs = assertSuggest( |
| 316 name, |
| 317 csKind: kind, |
| 318 relevance: relevance, |
| 319 elemKind: protocol.ElementKind.SETTER); |
| 302 protocol.Element element = cs.element; | 320 protocol.Element element = cs.element; |
| 303 expect(element, isNotNull); | 321 expect(element, isNotNull); |
| 304 expect(element.kind, equals(protocol.ElementKind.SETTER)); | 322 expect(element.kind, equals(protocol.ElementKind.SETTER)); |
| 305 expect(element.name, equals(name)); | 323 expect(element.name, equals(name)); |
| 306 // TODO (danrubel) assert setter param | 324 // TODO (danrubel) assert setter param |
| 307 //expect(element.parameters, isNull); | 325 //expect(element.parameters, isNull); |
| 308 expect(element.returnType, isNull); | 326 expect(element.returnType, isNull); |
| 309 return cs; | 327 return cs; |
| 310 } | 328 } |
| 311 | 329 |
| 312 CompletionSuggestion assertSuggestTopLevelVar(String name, String returnType, | 330 CompletionSuggestion assertSuggestTopLevelVar(String name, String returnType, |
| 313 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 331 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 332 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 314 CompletionSuggestion cs = | 333 CompletionSuggestion cs = |
| 315 assertSuggest(CompletionSuggestionKind.TOP_LEVEL_VARIABLE, name, relevan
ce); | 334 assertSuggest(name, csKind: kind, relevance: relevance); |
| 316 expect(cs.returnType, equals(returnType)); | 335 expect(cs.returnType, equals(returnType)); |
| 317 protocol.Element element = cs.element; | 336 protocol.Element element = cs.element; |
| 318 expect(element, isNotNull); | 337 expect(element, isNotNull); |
| 319 expect(element.kind, equals(protocol.ElementKind.TOP_LEVEL_VARIABLE)); | 338 expect(element.kind, equals(protocol.ElementKind.TOP_LEVEL_VARIABLE)); |
| 320 expect(element.name, equals(name)); | 339 expect(element.name, equals(name)); |
| 321 expect(element.parameters, isNull); | 340 expect(element.parameters, isNull); |
| 322 //TODO (danrubel) return type level variable 'type' but not as 'returnType' | 341 //TODO (danrubel) return type level variable 'type' but not as 'returnType' |
| 323 // expect( | 342 // expect( |
| 324 // element.returnType, | 343 // element.returnType, |
| 325 // equals(returnType != null ? returnType : 'dynamic')); | 344 // equals(returnType != null ? returnType : 'dynamic')); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 String declaringType, String returnType, [CompletionRelevance relevance = | 459 String declaringType, String returnType, [CompletionRelevance relevance = |
| 441 CompletionRelevance.DEFAULT]) { | 460 CompletionRelevance.DEFAULT]) { |
| 442 if (computer is LocalComputer) { | 461 if (computer is LocalComputer) { |
| 443 return assertSuggestMethod(name, declaringType, returnType, relevance); | 462 return assertSuggestMethod(name, declaringType, returnType, relevance); |
| 444 } else { | 463 } else { |
| 445 return assertNotSuggested(name); | 464 return assertNotSuggested(name); |
| 446 } | 465 } |
| 447 } | 466 } |
| 448 | 467 |
| 449 CompletionSuggestion assertSuggestImportedClass(String name, | 468 CompletionSuggestion assertSuggestImportedClass(String name, |
| 450 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 469 [CompletionRelevance relevance = CompletionRelevance.DEFAULT, |
| 470 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 451 if (computer is ImportedComputer) { | 471 if (computer is ImportedComputer) { |
| 452 return assertSuggestClass(name, relevance); | 472 return assertSuggestClass(name, relevance, kind); |
| 453 } else { | 473 } else { |
| 454 return assertNotSuggested(name); | 474 return assertNotSuggested(name); |
| 455 } | 475 } |
| 456 } | 476 } |
| 457 | 477 |
| 458 CompletionSuggestion assertSuggestImportedFunction(String name, | 478 CompletionSuggestion assertSuggestImportedFunction(String name, |
| 459 String returnType, [bool isDeprecated = false, CompletionRelevance relevan
ce = | 479 String returnType, [bool isDeprecated = false, CompletionRelevance relevan
ce = |
| 460 CompletionRelevance.DEFAULT]) { | 480 CompletionRelevance.DEFAULT, CompletionSuggestionKind kind = |
| 481 CompletionSuggestionKind.INVOCATION]) { |
| 461 if (computer is ImportedComputer) { | 482 if (computer is ImportedComputer) { |
| 462 return assertSuggestFunction(name, returnType, isDeprecated, relevance); | 483 return assertSuggestFunction( |
| 484 name, |
| 485 returnType, |
| 486 isDeprecated, |
| 487 relevance, |
| 488 kind); |
| 463 } else { | 489 } else { |
| 464 return assertNotSuggested(name); | 490 return assertNotSuggested(name); |
| 465 } | 491 } |
| 466 } | 492 } |
| 467 | 493 |
| 468 CompletionSuggestion assertSuggestImportedFunctionTypeAlias(String name, | 494 CompletionSuggestion assertSuggestImportedFunctionTypeAlias(String name, |
| 469 String returnType, [bool isDeprecated = false, CompletionRelevance relevan
ce = | 495 String returnType, [bool isDeprecated = false, CompletionRelevance relevan
ce = |
| 470 CompletionRelevance.DEFAULT]) { | 496 CompletionRelevance.DEFAULT, CompletionSuggestionKind kind = |
| 497 CompletionSuggestionKind.INVOCATION]) { |
| 471 if (computer is ImportedComputer) { | 498 if (computer is ImportedComputer) { |
| 472 return assertSuggestFunctionTypeAlias( | 499 return assertSuggestFunctionTypeAlias( |
| 473 name, | 500 name, |
| 474 returnType, | 501 returnType, |
| 475 isDeprecated, | 502 isDeprecated, |
| 476 relevance); | 503 relevance, |
| 504 kind); |
| 477 } else { | 505 } else { |
| 478 return assertNotSuggested(name); | 506 return assertNotSuggested(name); |
| 479 } | 507 } |
| 480 } | 508 } |
| 481 | 509 |
| 482 CompletionSuggestion assertSuggestImportedGetter(String name, | 510 CompletionSuggestion assertSuggestImportedGetter(String name, |
| 483 String returnType, [CompletionRelevance relevance = | 511 String returnType, [CompletionRelevance relevance = |
| 484 CompletionRelevance.DEFAULT]) { | 512 CompletionRelevance.DEFAULT]) { |
| 485 if (computer is ImportedComputer) { | 513 if (computer is ImportedComputer) { |
| 486 return assertSuggestGetter(name, returnType, relevance); | 514 return assertSuggestGetter(name, returnType, relevance); |
| 487 } else { | 515 } else { |
| 488 return assertNotSuggested(name); | 516 return assertNotSuggested(name); |
| 489 } | 517 } |
| 490 } | 518 } |
| 491 | 519 |
| 492 CompletionSuggestion assertSuggestImportedMethod(String name, | 520 CompletionSuggestion assertSuggestImportedMethod(String name, |
| 493 String declaringType, String returnType, [CompletionRelevance relevance = | 521 String declaringType, String returnType, [CompletionRelevance relevance = |
| 494 CompletionRelevance.DEFAULT]) { | 522 CompletionRelevance.DEFAULT]) { |
| 495 if (computer is ImportedComputer) { | 523 if (computer is ImportedComputer) { |
| 496 return assertSuggestMethod(name, declaringType, returnType, relevance); | 524 return assertSuggestMethod(name, declaringType, returnType, relevance); |
| 497 } else { | 525 } else { |
| 498 return assertNotSuggested(name); | 526 return assertNotSuggested(name); |
| 499 } | 527 } |
| 500 } | 528 } |
| 501 | 529 |
| 502 CompletionSuggestion assertSuggestImportedTopLevelVar(String name, | 530 CompletionSuggestion assertSuggestImportedTopLevelVar(String name, |
| 503 String returnType, [CompletionRelevance relevance = | 531 String returnType, [CompletionRelevance relevance = CompletionRelevance.DE
FAULT, |
| 504 CompletionRelevance.DEFAULT]) { | 532 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 505 if (computer is ImportedComputer) { | 533 if (computer is ImportedComputer) { |
| 506 return assertSuggestTopLevelVar(name, returnType, relevance); | 534 return assertSuggestTopLevelVar(name, returnType, relevance, kind); |
| 507 } else { | 535 } else { |
| 508 return assertNotSuggested(name); | 536 return assertNotSuggested(name); |
| 509 } | 537 } |
| 510 } | 538 } |
| 511 | 539 |
| 512 CompletionSuggestion assertSuggestInvocationClass(String name, | 540 CompletionSuggestion assertSuggestInvocationClass(String name, |
| 513 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { | 541 [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { |
| 514 if (computer is InvocationComputer) { | 542 if (computer is InvocationComputer) { |
| 515 return assertSuggestClass(name, relevance); | 543 return assertSuggestClass(name, relevance); |
| 516 } else { | 544 } else { |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 class PB { }'''); | 1001 class PB { }'''); |
| 974 addSource('/testCD.dart', ''' | 1002 addSource('/testCD.dart', ''' |
| 975 class C { } | 1003 class C { } |
| 976 class D { }'''); | 1004 class D { }'''); |
| 977 addTestSource(''' | 1005 addTestSource(''' |
| 978 import "/testAB.dart" hide ^; | 1006 import "/testAB.dart" hide ^; |
| 979 import "/testCD.dart"; | 1007 import "/testCD.dart"; |
| 980 class X {}'''); | 1008 class X {}'''); |
| 981 computeFast(); | 1009 computeFast(); |
| 982 return computeFull(true).then((_) { | 1010 return computeFull(true).then((_) { |
| 983 assertSuggestImportedClass('A'); | 1011 assertSuggestImportedClass( |
| 984 assertSuggestImportedClass('B'); | 1012 'A', |
| 985 assertSuggestImportedClass('PB'); | 1013 CompletionRelevance.DEFAULT, |
| 986 assertSuggestImportedTopLevelVar('T1', null); | 1014 CompletionSuggestionKind.IDENTIFIER); |
| 987 assertSuggestImportedFunction('F1', 'PB'); | 1015 assertSuggestImportedClass( |
| 1016 'B', |
| 1017 CompletionRelevance.DEFAULT, |
| 1018 CompletionSuggestionKind.IDENTIFIER); |
| 1019 assertSuggestImportedClass( |
| 1020 'PB', |
| 1021 CompletionRelevance.DEFAULT, |
| 1022 CompletionSuggestionKind.IDENTIFIER); |
| 1023 assertSuggestImportedTopLevelVar( |
| 1024 'T1', |
| 1025 null, |
| 1026 CompletionRelevance.DEFAULT, |
| 1027 CompletionSuggestionKind.IDENTIFIER); |
| 1028 assertSuggestImportedFunction( |
| 1029 'F1', |
| 1030 'PB', |
| 1031 false, |
| 1032 CompletionRelevance.DEFAULT, |
| 1033 CompletionSuggestionKind.IDENTIFIER); |
| 988 assertNotSuggested('C'); | 1034 assertNotSuggested('C'); |
| 989 assertNotSuggested('D'); | 1035 assertNotSuggested('D'); |
| 990 assertNotSuggested('X'); | 1036 assertNotSuggested('X'); |
| 991 assertNotSuggested('Object'); | 1037 assertNotSuggested('Object'); |
| 992 }); | 1038 }); |
| 993 } | 1039 } |
| 994 | 1040 |
| 995 test_Combinator_show() { | 1041 test_Combinator_show() { |
| 996 // SimpleIdentifier HideCombinator ImportDirective | 1042 // SimpleIdentifier HideCombinator ImportDirective |
| 997 addSource('/testAB.dart', ''' | 1043 addSource('/testAB.dart', ''' |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1008 class PB { }'''); | 1054 class PB { }'''); |
| 1009 addSource('/testCD.dart', ''' | 1055 addSource('/testCD.dart', ''' |
| 1010 class C { } | 1056 class C { } |
| 1011 class D { }'''); | 1057 class D { }'''); |
| 1012 addTestSource(''' | 1058 addTestSource(''' |
| 1013 import "/testAB.dart" show ^; | 1059 import "/testAB.dart" show ^; |
| 1014 import "/testCD.dart"; | 1060 import "/testCD.dart"; |
| 1015 class X {}'''); | 1061 class X {}'''); |
| 1016 computeFast(); | 1062 computeFast(); |
| 1017 return computeFull(true).then((_) { | 1063 return computeFull(true).then((_) { |
| 1018 assertSuggestImportedClass('A'); | 1064 assertSuggestImportedClass( |
| 1019 assertSuggestImportedClass('B'); | 1065 'A', |
| 1020 assertSuggestImportedClass('PB'); | 1066 CompletionRelevance.DEFAULT, |
| 1021 assertSuggestImportedTopLevelVar('T1', null); | 1067 CompletionSuggestionKind.IDENTIFIER); |
| 1022 assertSuggestImportedFunction('F1', 'PB'); | 1068 assertSuggestImportedClass( |
| 1023 assertSuggestImportedClass('Clz'); | 1069 'B', |
| 1024 assertSuggestImportedFunctionTypeAlias('F2', null); | 1070 CompletionRelevance.DEFAULT, |
| 1071 CompletionSuggestionKind.IDENTIFIER); |
| 1072 assertSuggestImportedClass( |
| 1073 'PB', |
| 1074 CompletionRelevance.DEFAULT, |
| 1075 CompletionSuggestionKind.IDENTIFIER); |
| 1076 assertSuggestImportedTopLevelVar( |
| 1077 'T1', |
| 1078 null, |
| 1079 CompletionRelevance.DEFAULT, |
| 1080 CompletionSuggestionKind.IDENTIFIER); |
| 1081 assertSuggestImportedFunction( |
| 1082 'F1', |
| 1083 'PB', |
| 1084 false, |
| 1085 CompletionRelevance.DEFAULT, |
| 1086 CompletionSuggestionKind.IDENTIFIER); |
| 1087 assertSuggestImportedClass( |
| 1088 'Clz', |
| 1089 CompletionRelevance.DEFAULT, |
| 1090 CompletionSuggestionKind.IDENTIFIER); |
| 1091 assertSuggestImportedFunctionTypeAlias( |
| 1092 'F2', |
| 1093 null, |
| 1094 false, |
| 1095 CompletionRelevance.DEFAULT, |
| 1096 CompletionSuggestionKind.IDENTIFIER); |
| 1025 assertNotSuggested('C'); | 1097 assertNotSuggested('C'); |
| 1026 assertNotSuggested('D'); | 1098 assertNotSuggested('D'); |
| 1027 assertNotSuggested('X'); | 1099 assertNotSuggested('X'); |
| 1028 assertNotSuggested('Object'); | 1100 assertNotSuggested('Object'); |
| 1029 }); | 1101 }); |
| 1030 } | 1102 } |
| 1031 | 1103 |
| 1032 test_ConstructorName_importedClass() { | 1104 test_ConstructorName_importedClass() { |
| 1033 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 1105 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 1034 // InstanceCreationExpression | 1106 // InstanceCreationExpression |
| (...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1795 assertNotSuggested('bar2'); | 1867 assertNotSuggested('bar2'); |
| 1796 assertNotSuggested('_B'); | 1868 assertNotSuggested('_B'); |
| 1797 assertSuggestLocalClass('Y'); | 1869 assertSuggestLocalClass('Y'); |
| 1798 assertSuggestLocalClass('C'); | 1870 assertSuggestLocalClass('C'); |
| 1799 assertSuggestLocalVariable('f', null); | 1871 assertSuggestLocalVariable('f', null); |
| 1800 assertNotSuggested('x'); | 1872 assertNotSuggested('x'); |
| 1801 assertNotSuggested('e'); | 1873 assertNotSuggested('e'); |
| 1802 }); | 1874 }); |
| 1803 } | 1875 } |
| 1804 } | 1876 } |
| OLD | NEW |