Chromium Code Reviews| 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 | |
|
Paul Berry
2015/08/12 17:00:59
Unintentional extra newline.
danrubel
2015/08/26 14:03:57
Removed
| |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 3 // 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. | 4 // BSD-style license that can be found in the LICENSE file. |
| 4 | 5 |
| 5 library test.services.completion.util; | 6 library test.services.completion.util; |
| 6 | 7 |
| 7 import 'dart:async'; | 8 import 'dart:async'; |
| 8 | 9 |
| 9 import 'package:analysis_server/src/analysis_server.dart'; | 10 import 'package:analysis_server/src/analysis_server.dart'; |
| 10 import 'package:analysis_server/src/protocol.dart' as protocol | 11 import 'package:analysis_server/src/protocol.dart' as protocol |
| 11 show Element, ElementKind; | 12 show Element, ElementKind; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 } | 89 } |
| 89 | 90 |
| 90 void assertNoSuggestions({CompletionSuggestionKind kind: null}) { | 91 void assertNoSuggestions({CompletionSuggestionKind kind: null}) { |
| 91 if (kind == null) { | 92 if (kind == null) { |
| 92 if (request.suggestions.length > 0) { | 93 if (request.suggestions.length > 0) { |
| 93 failedCompletion('Expected no suggestions', request.suggestions); | 94 failedCompletion('Expected no suggestions', request.suggestions); |
| 94 } | 95 } |
| 95 return; | 96 return; |
| 96 } | 97 } |
| 97 CompletionSuggestion suggestion = request.suggestions.firstWhere( | 98 CompletionSuggestion suggestion = request.suggestions.firstWhere( |
| 98 (CompletionSuggestion cs) => cs.kind == kind, orElse: () => null); | 99 (CompletionSuggestion cs) => cs.kind == kind, |
| 100 orElse: () => null); | |
| 99 if (suggestion != null) { | 101 if (suggestion != null) { |
| 100 failedCompletion('did not expect completion: $completion\n $suggestion'); | 102 failedCompletion('did not expect completion: $completion\n $suggestion'); |
| 101 } | 103 } |
| 102 } | 104 } |
| 103 | 105 |
| 104 CompletionSuggestion assertNotSuggested(String completion) { | 106 CompletionSuggestion assertNotSuggested(String completion) { |
| 105 CompletionSuggestion suggestion = request.suggestions.firstWhere( | 107 CompletionSuggestion suggestion = request.suggestions.firstWhere( |
| 106 (CompletionSuggestion cs) => cs.completion == completion, | 108 (CompletionSuggestion cs) => cs.completion == completion, |
| 107 orElse: () => null); | 109 orElse: () => null); |
| 108 if (suggestion != null) { | 110 if (suggestion != null) { |
| 109 failedCompletion('did not expect completion: $completion\n $suggestion'); | 111 failedCompletion('did not expect completion: $completion\n $suggestion'); |
| 110 } | 112 } |
| 111 return null; | 113 return null; |
| 112 } | 114 } |
| 113 | 115 |
| 114 CompletionSuggestion assertSuggest(String completion, | 116 CompletionSuggestion assertSuggest(String completion, |
| 115 {CompletionSuggestionKind csKind: CompletionSuggestionKind.INVOCATION, | 117 {CompletionSuggestionKind csKind: CompletionSuggestionKind.INVOCATION, |
| 116 int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 118 int relevance: DART_RELEVANCE_DEFAULT, |
| 117 protocol.ElementKind elemKind: null, bool isDeprecated: false, | 119 String importUri, |
| 118 bool isPotential: false, String elemFile, int elemOffset}) { | 120 protocol.ElementKind elemKind: null, |
| 121 bool isDeprecated: false, | |
| 122 bool isPotential: false, | |
| 123 String elemFile, | |
| 124 int elemOffset}) { | |
| 119 CompletionSuggestion cs = | 125 CompletionSuggestion cs = |
| 120 getSuggest(completion: completion, csKind: csKind, elemKind: elemKind); | 126 getSuggest(completion: completion, csKind: csKind, elemKind: elemKind); |
| 121 if (cs == null) { | 127 if (cs == null) { |
| 122 failedCompletion( | 128 failedCompletion( |
| 123 'expected $completion $csKind $elemKind', request.suggestions); | 129 'expected $completion $csKind $elemKind', request.suggestions); |
| 124 } | 130 } |
| 125 expect(cs.kind, equals(csKind)); | 131 expect(cs.kind, equals(csKind)); |
| 126 if (isDeprecated) { | 132 if (isDeprecated) { |
| 127 expect(cs.relevance, equals(DART_RELEVANCE_LOW)); | 133 expect(cs.relevance, equals(DART_RELEVANCE_LOW)); |
| 128 } else { | 134 } else { |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 144 if (elemFile != null) { | 150 if (elemFile != null) { |
| 145 expect(cs.element.location.file, elemFile); | 151 expect(cs.element.location.file, elemFile); |
| 146 } | 152 } |
| 147 if (elemOffset != null) { | 153 if (elemOffset != null) { |
| 148 expect(cs.element.location.offset, elemOffset); | 154 expect(cs.element.location.offset, elemOffset); |
| 149 } | 155 } |
| 150 return cs; | 156 return cs; |
| 151 } | 157 } |
| 152 | 158 |
| 153 CompletionSuggestion assertSuggestClass(String name, | 159 CompletionSuggestion assertSuggestClass(String name, |
| 154 {int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 160 {int relevance: DART_RELEVANCE_DEFAULT, |
| 161 String importUri, | |
| 155 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 162 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 156 bool isDeprecated: false, String elemFile, int elemOffset}) { | 163 bool isDeprecated: false, |
| 164 String elemFile, | |
| 165 int elemOffset}) { | |
| 157 CompletionSuggestion cs = assertSuggest(name, | 166 CompletionSuggestion cs = assertSuggest(name, |
| 158 csKind: kind, | 167 csKind: kind, |
| 159 relevance: relevance, | 168 relevance: relevance, |
| 160 importUri: importUri, | 169 importUri: importUri, |
| 161 isDeprecated: isDeprecated, | 170 isDeprecated: isDeprecated, |
| 162 elemFile: elemFile, | 171 elemFile: elemFile, |
| 163 elemOffset: elemOffset); | 172 elemOffset: elemOffset); |
| 164 protocol.Element element = cs.element; | 173 protocol.Element element = cs.element; |
| 165 expect(element, isNotNull); | 174 expect(element, isNotNull); |
| 166 expect(element.kind, equals(protocol.ElementKind.CLASS)); | 175 expect(element.kind, equals(protocol.ElementKind.CLASS)); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 180 expect(element, isNotNull); | 189 expect(element, isNotNull); |
| 181 expect(element.kind, equals(protocol.ElementKind.CLASS_TYPE_ALIAS)); | 190 expect(element.kind, equals(protocol.ElementKind.CLASS_TYPE_ALIAS)); |
| 182 expect(element.name, equals(name)); | 191 expect(element.name, equals(name)); |
| 183 expect(element.parameters, isNull); | 192 expect(element.parameters, isNull); |
| 184 expect(element.returnType, isNull); | 193 expect(element.returnType, isNull); |
| 185 assertHasNoParameterInfo(cs); | 194 assertHasNoParameterInfo(cs); |
| 186 return cs; | 195 return cs; |
| 187 } | 196 } |
| 188 | 197 |
| 189 CompletionSuggestion assertSuggestConstructor(String name, | 198 CompletionSuggestion assertSuggestConstructor(String name, |
| 190 {int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 199 {int relevance: DART_RELEVANCE_DEFAULT, |
| 200 String importUri, | |
| 191 int elemOffset}) { | 201 int elemOffset}) { |
| 192 CompletionSuggestion cs = assertSuggest(name, | 202 CompletionSuggestion cs = assertSuggest(name, |
| 193 relevance: relevance, importUri: importUri, elemOffset: elemOffset); | 203 relevance: relevance, importUri: importUri, elemOffset: elemOffset); |
| 194 protocol.Element element = cs.element; | 204 protocol.Element element = cs.element; |
| 195 expect(element, isNotNull); | 205 expect(element, isNotNull); |
| 196 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); | 206 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); |
| 197 int index = name.indexOf('.'); | 207 int index = name.indexOf('.'); |
| 198 expect(element.name, index >= 0 ? name.substring(index + 1) : ''); | 208 expect(element.name, index >= 0 ? name.substring(index + 1) : ''); |
| 199 return cs; | 209 return cs; |
| 200 } | 210 } |
| 201 | 211 |
| 202 CompletionSuggestion assertSuggestField(String name, String type, | 212 CompletionSuggestion assertSuggestField(String name, String type, |
| 203 {int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 213 {int relevance: DART_RELEVANCE_DEFAULT, |
| 214 String importUri, | |
| 204 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 215 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 205 bool isDeprecated: false}) { | 216 bool isDeprecated: false}) { |
| 206 CompletionSuggestion cs = assertSuggest(name, | 217 CompletionSuggestion cs = assertSuggest(name, |
| 207 csKind: kind, | 218 csKind: kind, |
| 208 relevance: relevance, | 219 relevance: relevance, |
| 209 importUri: importUri, | 220 importUri: importUri, |
| 210 elemKind: protocol.ElementKind.FIELD, | 221 elemKind: protocol.ElementKind.FIELD, |
| 211 isDeprecated: isDeprecated); | 222 isDeprecated: isDeprecated); |
| 212 // The returnType represents the type of a field | 223 // The returnType represents the type of a field |
| 213 expect(cs.returnType, type != null ? type : 'dynamic'); | 224 expect(cs.returnType, type != null ? type : 'dynamic'); |
| 214 protocol.Element element = cs.element; | 225 protocol.Element element = cs.element; |
| 215 expect(element, isNotNull); | 226 expect(element, isNotNull); |
| 216 expect(element.kind, equals(protocol.ElementKind.FIELD)); | 227 expect(element.kind, equals(protocol.ElementKind.FIELD)); |
| 217 expect(element.name, equals(name)); | 228 expect(element.name, equals(name)); |
| 218 expect(element.parameters, isNull); | 229 expect(element.parameters, isNull); |
| 219 // The returnType represents the type of a field | 230 // The returnType represents the type of a field |
| 220 expect(element.returnType, type != null ? type : 'dynamic'); | 231 expect(element.returnType, type != null ? type : 'dynamic'); |
| 221 assertHasNoParameterInfo(cs); | 232 assertHasNoParameterInfo(cs); |
| 222 return cs; | 233 return cs; |
| 223 } | 234 } |
| 224 | 235 |
| 225 CompletionSuggestion assertSuggestFunction(String name, String returnType, | 236 CompletionSuggestion assertSuggestFunction(String name, String returnType, |
| 226 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 237 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 227 bool deprecated: false, int relevance: DART_RELEVANCE_DEFAULT, | 238 bool deprecated: false, |
| 239 int relevance: DART_RELEVANCE_DEFAULT, | |
| 228 String importUri}) { | 240 String importUri}) { |
| 229 CompletionSuggestion cs = assertSuggest(name, | 241 CompletionSuggestion cs = assertSuggest(name, |
| 230 csKind: kind, | 242 csKind: kind, |
| 231 relevance: relevance, | 243 relevance: relevance, |
| 232 importUri: importUri, | 244 importUri: importUri, |
| 233 isDeprecated: deprecated); | 245 isDeprecated: deprecated); |
| 234 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); | 246 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); |
| 235 protocol.Element element = cs.element; | 247 protocol.Element element = cs.element; |
| 236 expect(element, isNotNull); | 248 expect(element, isNotNull); |
| 237 expect(element.kind, equals(protocol.ElementKind.FUNCTION)); | 249 expect(element.kind, equals(protocol.ElementKind.FUNCTION)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 269 // expect(param[0], equals('(')); | 281 // expect(param[0], equals('(')); |
| 270 // expect(param[param.length - 1], equals(')')); | 282 // expect(param[param.length - 1], equals(')')); |
| 271 expect(element.returnType, | 283 expect(element.returnType, |
| 272 equals(returnType != null ? returnType : 'dynamic')); | 284 equals(returnType != null ? returnType : 'dynamic')); |
| 273 // TODO (danrubel) Determine why param info is missing | 285 // TODO (danrubel) Determine why param info is missing |
| 274 // assertHasParameterInfo(cs); | 286 // assertHasParameterInfo(cs); |
| 275 return cs; | 287 return cs; |
| 276 } | 288 } |
| 277 | 289 |
| 278 CompletionSuggestion assertSuggestGetter(String name, String returnType, | 290 CompletionSuggestion assertSuggestGetter(String name, String returnType, |
| 279 {int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 291 {int relevance: DART_RELEVANCE_DEFAULT, |
| 292 String importUri, | |
| 280 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 293 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 281 bool isDeprecated: false}) { | 294 bool isDeprecated: false}) { |
| 282 CompletionSuggestion cs = assertSuggest(name, | 295 CompletionSuggestion cs = assertSuggest(name, |
| 283 csKind: kind, | 296 csKind: kind, |
| 284 relevance: relevance, | 297 relevance: relevance, |
| 285 importUri: importUri, | 298 importUri: importUri, |
| 286 elemKind: protocol.ElementKind.GETTER, | 299 elemKind: protocol.ElementKind.GETTER, |
| 287 isDeprecated: isDeprecated); | 300 isDeprecated: isDeprecated); |
| 288 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); | 301 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); |
| 289 protocol.Element element = cs.element; | 302 protocol.Element element = cs.element; |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 316 | 329 |
| 317 CompletionSuggestion assertSuggestLibraryPrefix(String prefix, | 330 CompletionSuggestion assertSuggestLibraryPrefix(String prefix, |
| 318 [int relevance = DART_RELEVANCE_DEFAULT, | 331 [int relevance = DART_RELEVANCE_DEFAULT, |
| 319 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { | 332 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 320 // Library prefix should only be suggested by ImportedReferenceContributor | 333 // Library prefix should only be suggested by ImportedReferenceContributor |
| 321 return assertNotSuggested(prefix); | 334 return assertNotSuggested(prefix); |
| 322 } | 335 } |
| 323 | 336 |
| 324 CompletionSuggestion assertSuggestMethod( | 337 CompletionSuggestion assertSuggestMethod( |
| 325 String name, String declaringType, String returnType, | 338 String name, String declaringType, String returnType, |
| 326 {int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 339 {int relevance: DART_RELEVANCE_DEFAULT, |
| 340 String importUri, | |
| 327 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 341 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 328 bool isDeprecated: false}) { | 342 bool isDeprecated: false}) { |
| 329 CompletionSuggestion cs = assertSuggest(name, | 343 CompletionSuggestion cs = assertSuggest(name, |
| 330 csKind: kind, | 344 csKind: kind, |
| 331 relevance: relevance, | 345 relevance: relevance, |
| 332 importUri: importUri, | 346 importUri: importUri, |
| 333 isDeprecated: isDeprecated); | 347 isDeprecated: isDeprecated); |
| 334 expect(cs.declaringType, equals(declaringType)); | 348 expect(cs.declaringType, equals(declaringType)); |
| 335 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); | 349 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); |
| 336 protocol.Element element = cs.element; | 350 protocol.Element element = cs.element; |
| 337 expect(element, isNotNull); | 351 expect(element, isNotNull); |
| 338 expect(element.kind, equals(protocol.ElementKind.METHOD)); | 352 expect(element.kind, equals(protocol.ElementKind.METHOD)); |
| 339 expect(element.name, equals(name)); | 353 expect(element.name, equals(name)); |
| 340 String param = element.parameters; | 354 String param = element.parameters; |
| 341 expect(param, isNotNull); | 355 expect(param, isNotNull); |
| 342 expect(param[0], equals('(')); | 356 expect(param[0], equals('(')); |
| 343 expect(param[param.length - 1], equals(')')); | 357 expect(param[param.length - 1], equals(')')); |
| 344 expect(element.returnType, returnType != null ? returnType : 'dynamic'); | 358 expect(element.returnType, returnType != null ? returnType : 'dynamic'); |
| 345 assertHasParameterInfo(cs); | 359 assertHasParameterInfo(cs); |
| 346 return cs; | 360 return cs; |
| 347 } | 361 } |
| 348 | 362 |
| 349 CompletionSuggestion assertSuggestNamedConstructor( | 363 CompletionSuggestion assertSuggestNamedConstructor( |
| 350 String name, String returnType, [int relevance = DART_RELEVANCE_DEFAULT, | 364 String name, String returnType, |
| 365 [int relevance = DART_RELEVANCE_DEFAULT, | |
| 351 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { | 366 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 352 if (contributor is PrefixedElementContributor) { | 367 if (contributor is PrefixedElementContributor) { |
| 353 CompletionSuggestion cs = | 368 CompletionSuggestion cs = |
| 354 assertSuggest(name, csKind: kind, relevance: relevance); | 369 assertSuggest(name, csKind: kind, relevance: relevance); |
| 355 protocol.Element element = cs.element; | 370 protocol.Element element = cs.element; |
| 356 expect(element, isNotNull); | 371 expect(element, isNotNull); |
| 357 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); | 372 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); |
| 358 expect(element.name, equals(name)); | 373 expect(element.name, equals(name)); |
| 359 String param = element.parameters; | 374 String param = element.parameters; |
| 360 expect(param, isNotNull); | 375 expect(param, isNotNull); |
| 361 expect(param[0], equals('(')); | 376 expect(param[0], equals('(')); |
| 362 expect(param[param.length - 1], equals(')')); | 377 expect(param[param.length - 1], equals(')')); |
| 363 expect(element.returnType, equals(returnType)); | 378 expect(element.returnType, equals(returnType)); |
| 364 assertHasParameterInfo(cs); | 379 assertHasParameterInfo(cs); |
| 365 return cs; | 380 return cs; |
| 366 } else { | 381 } else { |
| 367 return assertNotSuggested(name); | 382 return assertNotSuggested(name); |
| 368 } | 383 } |
| 369 } | 384 } |
| 370 | 385 |
| 371 CompletionSuggestion assertSuggestParameter(String name, String returnType, | 386 CompletionSuggestion assertSuggestParameter(String name, String returnType, |
| 372 {int relevance: DART_RELEVANCE_PARAMETER}) { | 387 {int relevance: DART_RELEVANCE_PARAMETER}) { |
| 373 return assertNotSuggested(name); | 388 return assertNotSuggested(name); |
| 374 } | 389 } |
| 375 | 390 |
| 376 CompletionSuggestion assertSuggestSetter(String name, | 391 CompletionSuggestion assertSuggestSetter(String name, |
| 377 [int relevance = DART_RELEVANCE_DEFAULT, String importUri, | 392 [int relevance = DART_RELEVANCE_DEFAULT, |
| 393 String importUri, | |
| 378 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { | 394 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 379 CompletionSuggestion cs = assertSuggest(name, | 395 CompletionSuggestion cs = assertSuggest(name, |
| 380 csKind: kind, | 396 csKind: kind, |
| 381 relevance: relevance, | 397 relevance: relevance, |
| 382 importUri: importUri, | 398 importUri: importUri, |
| 383 elemKind: protocol.ElementKind.SETTER); | 399 elemKind: protocol.ElementKind.SETTER); |
| 384 protocol.Element element = cs.element; | 400 protocol.Element element = cs.element; |
| 385 expect(element, isNotNull); | 401 expect(element, isNotNull); |
| 386 expect(element.kind, equals(protocol.ElementKind.SETTER)); | 402 expect(element.kind, equals(protocol.ElementKind.SETTER)); |
| 387 expect(element.name, equals(name)); | 403 expect(element.name, equals(name)); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 462 sb.write('\n in'); | 478 sb.write('\n in'); |
| 463 AstNode node = completionNode; | 479 AstNode node = completionNode; |
| 464 while (node != null) { | 480 while (node != null) { |
| 465 sb.write('\n ${node.runtimeType}'); | 481 sb.write('\n ${node.runtimeType}'); |
| 466 node = node.parent; | 482 node = node.parent; |
| 467 } | 483 } |
| 468 } | 484 } |
| 469 fail(sb.toString()); | 485 fail(sb.toString()); |
| 470 } | 486 } |
| 471 | 487 |
| 472 CompletionSuggestion getSuggest({String completion: null, | 488 CompletionSuggestion getSuggest( |
| 489 {String completion: null, | |
| 473 CompletionSuggestionKind csKind: null, | 490 CompletionSuggestionKind csKind: null, |
| 474 protocol.ElementKind elemKind: null}) { | 491 protocol.ElementKind elemKind: null}) { |
| 475 CompletionSuggestion cs; | 492 CompletionSuggestion cs; |
| 476 request.suggestions.forEach((CompletionSuggestion s) { | 493 request.suggestions.forEach((CompletionSuggestion s) { |
| 477 if (completion != null && completion != s.completion) { | 494 if (completion != null && completion != s.completion) { |
| 478 return; | 495 return; |
| 479 } | 496 } |
| 480 if (csKind != null && csKind != s.kind) { | 497 if (csKind != null && csKind != s.kind) { |
| 481 return; | 498 return; |
| 482 } | 499 } |
| 483 if (elemKind != null) { | 500 if (elemKind != null) { |
| 484 protocol.Element element = s.element; | 501 protocol.Element element = s.element; |
| 485 if (element == null || elemKind != element.kind) { | 502 if (element == null || elemKind != element.kind) { |
| 486 return; | 503 return; |
| 487 } | 504 } |
| 488 } | 505 } |
| 489 if (cs == null) { | 506 if (cs == null) { |
| 490 cs = s; | 507 cs = s; |
| 491 } else { | 508 } else { |
| 492 failedCompletion('expected exactly one $cs', | 509 failedCompletion('expected exactly one $cs', |
| 493 request.suggestions.where((s) => s.completion == completion)); | 510 request.suggestions.where((s) => s.completion == completion)); |
| 494 } | 511 } |
| 495 }); | 512 }); |
| 496 return cs; | 513 return cs; |
| 497 } | 514 } |
| 498 | 515 |
| 499 void resolve(bool fullAnalysis) { | 516 void resolve(bool fullAnalysis) { |
| 500 | |
| 501 // Index SDK | 517 // Index SDK |
| 502 for (Source librarySource in context.librarySources) { | 518 for (Source librarySource in context.librarySources) { |
| 503 CompilationUnit unit = | 519 CompilationUnit unit = |
| 504 context.getResolvedCompilationUnit2(librarySource, librarySource); | 520 context.getResolvedCompilationUnit2(librarySource, librarySource); |
| 505 if (unit != null) { | 521 if (unit != null) { |
| 506 index.indexUnit(context, unit); | 522 index.indexUnit(context, unit); |
| 507 } | 523 } |
| 508 } | 524 } |
| 509 | 525 |
| 510 var result = context.performAnalysisTask(); | 526 var result = context.performAnalysisTask(); |
| 511 bool resolved = false; | 527 bool resolved = false; |
| 512 while (result.hasMoreWork) { | 528 while (result.hasMoreWork) { |
| 513 | |
| 514 // Update the index | 529 // Update the index |
| 515 result.changeNotices.forEach((ChangeNotice notice) { | 530 result.changeNotices.forEach((ChangeNotice notice) { |
| 516 CompilationUnit unit = notice.resolvedDartUnit; | 531 CompilationUnit unit = notice.resolvedDartUnit; |
| 517 if (unit != null) { | 532 if (unit != null) { |
| 518 index.indexUnit(context, unit); | 533 index.indexUnit(context, unit); |
| 519 } | 534 } |
| 520 }); | 535 }); |
| 521 | 536 |
| 522 // If the unit has been resolved, then finish the completion | 537 // If the unit has been resolved, then finish the completion |
| 523 List<Source> libSourceList = context.getLibrariesContaining(testSource); | 538 List<Source> libSourceList = context.getLibrariesContaining(testSource); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 554 } | 569 } |
| 555 | 570 |
| 556 void setUpContributor(); | 571 void setUpContributor(); |
| 557 } | 572 } |
| 558 | 573 |
| 559 /** | 574 /** |
| 560 * Common tests for `ImportedTypeContributorTest`, `InvocationContributorTest`, | 575 * Common tests for `ImportedTypeContributorTest`, `InvocationContributorTest`, |
| 561 * and `LocalContributorTest`. | 576 * and `LocalContributorTest`. |
| 562 */ | 577 */ |
| 563 abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest { | 578 abstract class AbstractSelectorSuggestionTest extends AbstractCompletionTest { |
| 564 | |
| 565 /** | 579 /** |
| 566 * Assert that the ImportedReferenceContributor uses cached results | 580 * Assert that the ImportedReferenceContributor uses cached results |
| 567 * to produce identical suggestions to the original set of suggestions. | 581 * to produce identical suggestions to the original set of suggestions. |
| 568 */ | 582 */ |
| 569 void assertCachedCompute(_) { | 583 void assertCachedCompute(_) { |
| 570 // Subclasses override | 584 // Subclasses override |
| 571 } | 585 } |
| 572 | 586 |
| 573 CompletionSuggestion assertSuggestEnum(String completion, | 587 CompletionSuggestion assertSuggestEnum(String completion, |
| 574 {bool isDeprecated: false}) { | 588 {bool isDeprecated: false}) { |
| 575 CompletionSuggestion suggestion = | 589 CompletionSuggestion suggestion = |
| 576 assertSuggest(completion, isDeprecated: isDeprecated); | 590 assertSuggest(completion, isDeprecated: isDeprecated); |
| 577 expect(suggestion.isDeprecated, isDeprecated); | 591 expect(suggestion.isDeprecated, isDeprecated); |
| 578 expect(suggestion.element.kind, protocol.ElementKind.ENUM); | 592 expect(suggestion.element.kind, protocol.ElementKind.ENUM); |
| 579 return suggestion; | 593 return suggestion; |
| 580 } | 594 } |
| 581 | 595 |
| 582 CompletionSuggestion assertSuggestEnumConst(String completion, | 596 CompletionSuggestion assertSuggestEnumConst(String completion, |
| 583 {bool isDeprecated: false}) { | 597 {bool isDeprecated: false}) { |
| 584 CompletionSuggestion suggestion = | 598 CompletionSuggestion suggestion = |
| 585 assertSuggest(completion, isDeprecated: isDeprecated); | 599 assertSuggest(completion, isDeprecated: isDeprecated); |
| 586 expect(suggestion.isDeprecated, isDeprecated); | 600 expect(suggestion.isDeprecated, isDeprecated); |
| 587 expect(suggestion.element.kind, protocol.ElementKind.ENUM_CONSTANT); | 601 expect(suggestion.element.kind, protocol.ElementKind.ENUM_CONSTANT); |
| 588 return suggestion; | 602 return suggestion; |
| 589 } | 603 } |
| 590 | 604 |
| 591 CompletionSuggestion assertSuggestImportedClass(String name, | 605 CompletionSuggestion assertSuggestImportedClass(String name, |
| 592 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 606 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 593 int relevance: DART_RELEVANCE_DEFAULT, String importUri, | 607 int relevance: DART_RELEVANCE_DEFAULT, |
| 608 String importUri, | |
| 594 String elemFile}) { | 609 String elemFile}) { |
| 595 return assertNotSuggested(name); | 610 return assertNotSuggested(name); |
| 596 } | 611 } |
| 597 | 612 |
| 598 CompletionSuggestion assertSuggestImportedConstructor(String name, | 613 CompletionSuggestion assertSuggestImportedConstructor(String name, |
| 599 {int relevance: DART_RELEVANCE_DEFAULT, String importUri}) { | 614 {int relevance: DART_RELEVANCE_DEFAULT, String importUri}) { |
| 600 return assertNotSuggested(name); | 615 return assertNotSuggested(name); |
| 601 } | 616 } |
| 602 | 617 |
| 603 CompletionSuggestion assertSuggestImportedField(String name, String type, | 618 CompletionSuggestion assertSuggestImportedField(String name, String type, |
| 604 {int relevance: DART_RELEVANCE_INHERITED_FIELD}) { | 619 {int relevance: DART_RELEVANCE_INHERITED_FIELD}) { |
| 605 return assertNotSuggested(name); | 620 return assertNotSuggested(name); |
| 606 } | 621 } |
| 607 | 622 |
| 608 CompletionSuggestion assertSuggestImportedFunction( | 623 CompletionSuggestion assertSuggestImportedFunction( |
| 609 String name, String returnType, | 624 String name, String returnType, |
| 610 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 625 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 611 bool deprecated: false, int relevance: DART_RELEVANCE_DEFAULT, | 626 bool deprecated: false, |
| 627 int relevance: DART_RELEVANCE_DEFAULT, | |
| 612 String importUri}) { | 628 String importUri}) { |
| 613 return assertNotSuggested(name); | 629 return assertNotSuggested(name); |
| 614 } | 630 } |
| 615 | 631 |
| 616 CompletionSuggestion assertSuggestImportedFunctionTypeAlias( | 632 CompletionSuggestion assertSuggestImportedFunctionTypeAlias( |
| 617 String name, String returnType, [bool isDeprecated = false, | 633 String name, String returnType, |
| 634 [bool isDeprecated = false, | |
| 618 int relevance = DART_RELEVANCE_DEFAULT, | 635 int relevance = DART_RELEVANCE_DEFAULT, |
| 619 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { | 636 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 620 return assertNotSuggested(name); | 637 return assertNotSuggested(name); |
| 621 } | 638 } |
| 622 | 639 |
| 623 CompletionSuggestion assertSuggestImportedGetter( | 640 CompletionSuggestion assertSuggestImportedGetter( |
| 624 String name, String returnType, | 641 String name, String returnType, |
| 625 {int relevance: DART_RELEVANCE_INHERITED_ACCESSOR}) { | 642 {int relevance: DART_RELEVANCE_INHERITED_ACCESSOR}) { |
| 626 return assertNotSuggested(name); | 643 return assertNotSuggested(name); |
| 627 } | 644 } |
| 628 | 645 |
| 629 CompletionSuggestion assertSuggestImportedMethod( | 646 CompletionSuggestion assertSuggestImportedMethod( |
| 630 String name, String declaringType, String returnType, | 647 String name, String declaringType, String returnType, |
| 631 {int relevance: DART_RELEVANCE_INHERITED_METHOD}) { | 648 {int relevance: DART_RELEVANCE_INHERITED_METHOD}) { |
| 632 return assertNotSuggested(name); | 649 return assertNotSuggested(name); |
| 633 } | 650 } |
| 634 | 651 |
| 635 CompletionSuggestion assertSuggestImportedSetter(String name, | 652 CompletionSuggestion assertSuggestImportedSetter(String name, |
| 636 {int relevance: DART_RELEVANCE_INHERITED_ACCESSOR}) { | 653 {int relevance: DART_RELEVANCE_INHERITED_ACCESSOR}) { |
| 637 return assertNotSuggested(name); | 654 return assertNotSuggested(name); |
| 638 } | 655 } |
| 639 | 656 |
| 640 CompletionSuggestion assertSuggestImportedTopLevelVar( | 657 CompletionSuggestion assertSuggestImportedTopLevelVar( |
| 641 String name, String returnType, [int relevance = DART_RELEVANCE_DEFAULT, | 658 String name, String returnType, |
| 659 [int relevance = DART_RELEVANCE_DEFAULT, | |
| 642 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION, | 660 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION, |
| 643 String importUri]) { | 661 String importUri]) { |
| 644 return assertNotSuggested(name); | 662 return assertNotSuggested(name); |
| 645 } | 663 } |
| 646 | 664 |
| 647 CompletionSuggestion assertSuggestInvocationClass(String name, | 665 CompletionSuggestion assertSuggestInvocationClass(String name, |
| 648 [int relevance = DART_RELEVANCE_DEFAULT]) { | 666 [int relevance = DART_RELEVANCE_DEFAULT]) { |
| 649 if (contributor is PrefixedElementContributor) { | 667 if (contributor is PrefixedElementContributor) { |
| 650 return assertSuggestClass(name, relevance: relevance); | 668 return assertSuggestClass(name, relevance: relevance); |
| 651 } else { | 669 } else { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 694 [int relevance = DART_RELEVANCE_DEFAULT]) { | 712 [int relevance = DART_RELEVANCE_DEFAULT]) { |
| 695 if (contributor is PrefixedElementContributor) { | 713 if (contributor is PrefixedElementContributor) { |
| 696 return assertSuggestTopLevelVar(name, returnType, relevance); | 714 return assertSuggestTopLevelVar(name, returnType, relevance); |
| 697 } else { | 715 } else { |
| 698 return assertNotSuggested(name); | 716 return assertNotSuggested(name); |
| 699 } | 717 } |
| 700 } | 718 } |
| 701 | 719 |
| 702 CompletionSuggestion assertSuggestLocalClass(String name, | 720 CompletionSuggestion assertSuggestLocalClass(String name, |
| 703 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, | 721 {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION, |
| 704 int relevance: DART_RELEVANCE_DEFAULT, bool isDeprecated: false, | 722 int relevance: DART_RELEVANCE_DEFAULT, |
| 705 String elemFile, int elemOffset}) { | 723 bool isDeprecated: false, |
| 724 String elemFile, | |
| 725 int elemOffset}) { | |
| 706 return assertNotSuggested(name); | 726 return assertNotSuggested(name); |
| 707 } | 727 } |
| 708 | 728 |
| 709 CompletionSuggestion assertSuggestLocalClassTypeAlias(String name, | 729 CompletionSuggestion assertSuggestLocalClassTypeAlias(String name, |
| 710 {int relevance: DART_RELEVANCE_DEFAULT}) { | 730 {int relevance: DART_RELEVANCE_DEFAULT}) { |
| 711 return assertNotSuggested(name); | 731 return assertNotSuggested(name); |
| 712 } | 732 } |
| 713 | 733 |
| 714 CompletionSuggestion assertSuggestLocalConstructor(String name, | 734 CompletionSuggestion assertSuggestLocalConstructor(String name, |
| 715 {int elemOffset}) { | 735 {int elemOffset}) { |
| 716 return assertNotSuggested(name); | 736 return assertNotSuggested(name); |
| 717 } | 737 } |
| 718 | 738 |
| 719 CompletionSuggestion assertSuggestLocalField(String name, String type, | 739 CompletionSuggestion assertSuggestLocalField(String name, String type, |
| 720 {int relevance: DART_RELEVANCE_LOCAL_FIELD, bool deprecated: false}) { | 740 {int relevance: DART_RELEVANCE_LOCAL_FIELD, bool deprecated: false}) { |
| 721 return assertNotSuggested(name); | 741 return assertNotSuggested(name); |
| 722 } | 742 } |
| 723 | 743 |
| 724 CompletionSuggestion assertSuggestLocalFunction( | 744 CompletionSuggestion assertSuggestLocalFunction( |
| 725 String name, String returnType, {bool deprecated: false, | 745 String name, String returnType, |
| 746 {bool deprecated: false, | |
| 726 int relevance: DART_RELEVANCE_LOCAL_FUNCTION, | 747 int relevance: DART_RELEVANCE_LOCAL_FUNCTION, |
| 727 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION}) { | 748 CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION}) { |
| 728 return assertNotSuggested(name); | 749 return assertNotSuggested(name); |
| 729 } | 750 } |
| 730 | 751 |
| 731 CompletionSuggestion assertSuggestLocalFunctionTypeAlias( | 752 CompletionSuggestion assertSuggestLocalFunctionTypeAlias( |
| 732 String name, String returnType, | 753 String name, String returnType, |
| 733 {bool deprecated: false, int relevance: DART_RELEVANCE_DEFAULT}) { | 754 {bool deprecated: false, int relevance: DART_RELEVANCE_DEFAULT}) { |
| 734 return assertNotSuggested(name); | 755 return assertNotSuggested(name); |
| 735 } | 756 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 769 } | 790 } |
| 770 | 791 |
| 771 Future computeFull(assertFunction(bool result), {bool fullAnalysis: true}) { | 792 Future computeFull(assertFunction(bool result), {bool fullAnalysis: true}) { |
| 772 return super | 793 return super |
| 773 .computeFull(assertFunction, fullAnalysis: fullAnalysis) | 794 .computeFull(assertFunction, fullAnalysis: fullAnalysis) |
| 774 .then(assertCachedCompute); | 795 .then(assertCachedCompute); |
| 775 } | 796 } |
| 776 | 797 |
| 777 test_ArgumentList() { | 798 test_ArgumentList() { |
| 778 // ArgumentList MethodInvocation ExpressionStatement Block | 799 // ArgumentList MethodInvocation ExpressionStatement Block |
| 779 addSource('/libA.dart', ''' | 800 addSource( |
| 801 '/libA.dart', | |
| 802 ''' | |
| 780 library A; | 803 library A; |
| 781 bool hasLength(int expected) { } | 804 bool hasLength(int expected) { } |
| 782 void baz() { }'''); | 805 void baz() { }'''); |
| 783 addTestSource(''' | 806 addTestSource(''' |
| 784 import '/libA.dart'; | 807 import '/libA.dart'; |
| 785 class B { } | 808 class B { } |
| 786 String bar() => true; | 809 String bar() => true; |
| 787 void main() {expect(^)}'''); | 810 void main() {expect(^)}'''); |
| 788 computeFast(); | 811 computeFast(); |
| 789 return computeFull((bool result) { | 812 return computeFull((bool result) { |
| 790 expect(request.replacementOffset, completionOffset); | 813 expect(request.replacementOffset, completionOffset); |
| 791 expect(request.replacementLength, 0); | 814 expect(request.replacementLength, 0); |
| 792 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); | 815 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); |
| 793 assertSuggestLocalFunction('bar', 'String'); | 816 assertSuggestLocalFunction('bar', 'String'); |
| 794 assertSuggestImportedFunction('hasLength', 'bool'); | 817 assertSuggestImportedFunction('hasLength', 'bool'); |
| 795 assertSuggestImportedFunction('identical', 'bool'); | 818 assertSuggestImportedFunction('identical', 'bool'); |
| 796 assertSuggestLocalClass('B'); | 819 assertSuggestLocalClass('B'); |
| 797 assertSuggestImportedClass('Object'); | 820 assertSuggestImportedClass('Object'); |
| 798 assertNotSuggested('main'); | 821 assertNotSuggested('main'); |
| 799 assertNotSuggested('baz'); | 822 assertNotSuggested('baz'); |
| 800 assertNotSuggested('print'); | 823 assertNotSuggested('print'); |
| 801 }); | 824 }); |
| 802 } | 825 } |
| 803 | 826 |
| 804 test_ArgumentList_imported_function() { | 827 test_ArgumentList_imported_function() { |
| 805 // ArgumentList MethodInvocation ExpressionStatement Block | 828 // ArgumentList MethodInvocation ExpressionStatement Block |
| 806 addSource('/libA.dart', ''' | 829 addSource( |
| 830 '/libA.dart', | |
| 831 ''' | |
| 807 library A; | 832 library A; |
| 808 bool hasLength(int expected) { } | 833 bool hasLength(int expected) { } |
| 809 expect(arg) { } | 834 expect(arg) { } |
| 810 void baz() { }'''); | 835 void baz() { }'''); |
| 811 addTestSource(''' | 836 addTestSource(''' |
| 812 import '/libA.dart' | 837 import '/libA.dart' |
| 813 class B { } | 838 class B { } |
| 814 String bar() => true; | 839 String bar() => true; |
| 815 void main() {expect(^)}'''); | 840 void main() {expect(^)}'''); |
| 816 computeFast(); | 841 computeFast(); |
| 817 return computeFull((bool result) { | 842 return computeFull((bool result) { |
| 818 expect(request.replacementOffset, completionOffset); | 843 expect(request.replacementOffset, completionOffset); |
| 819 expect(request.replacementLength, 0); | 844 expect(request.replacementLength, 0); |
| 820 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); | 845 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); |
| 821 assertSuggestLocalFunction('bar', 'String'); | 846 assertSuggestLocalFunction('bar', 'String'); |
| 822 assertSuggestImportedFunction('hasLength', 'bool'); | 847 assertSuggestImportedFunction('hasLength', 'bool'); |
| 823 assertSuggestImportedFunction('identical', 'bool'); | 848 assertSuggestImportedFunction('identical', 'bool'); |
| 824 assertSuggestLocalClass('B'); | 849 assertSuggestLocalClass('B'); |
| 825 assertSuggestImportedClass('Object'); | 850 assertSuggestImportedClass('Object'); |
| 826 assertNotSuggested('main'); | 851 assertNotSuggested('main'); |
| 827 assertNotSuggested('baz'); | 852 assertNotSuggested('baz'); |
| 828 assertNotSuggested('print'); | 853 assertNotSuggested('print'); |
| 829 }); | 854 }); |
| 830 } | 855 } |
| 831 | 856 |
| 832 test_ArgumentList_InstanceCreationExpression_functionalArg() { | 857 test_ArgumentList_InstanceCreationExpression_functionalArg() { |
| 833 // ArgumentList InstanceCreationExpression ExpressionStatement Block | 858 // ArgumentList InstanceCreationExpression ExpressionStatement Block |
| 834 addSource('/libA.dart', ''' | 859 addSource( |
| 860 '/libA.dart', | |
| 861 ''' | |
| 835 library A; | 862 library A; |
| 836 class A { A(f()) { } } | 863 class A { A(f()) { } } |
| 837 bool hasLength(int expected) { } | 864 bool hasLength(int expected) { } |
| 838 void baz() { }'''); | 865 void baz() { }'''); |
| 839 addTestSource(''' | 866 addTestSource(''' |
| 840 import 'dart:async'; | 867 import 'dart:async'; |
| 841 import '/libA.dart'; | 868 import '/libA.dart'; |
| 842 class B { } | 869 class B { } |
| 843 String bar() => true; | 870 String bar() => true; |
| 844 void main() {new A(^)}'''); | 871 void main() {new A(^)}'''); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 859 assertSuggestImportedClass('Object', | 886 assertSuggestImportedClass('Object', |
| 860 kind: CompletionSuggestionKind.IDENTIFIER); | 887 kind: CompletionSuggestionKind.IDENTIFIER); |
| 861 assertNotSuggested('main'); | 888 assertNotSuggested('main'); |
| 862 assertNotSuggested('baz'); | 889 assertNotSuggested('baz'); |
| 863 assertNotSuggested('print'); | 890 assertNotSuggested('print'); |
| 864 }); | 891 }); |
| 865 } | 892 } |
| 866 | 893 |
| 867 test_ArgumentList_InstanceCreationExpression_typedefArg() { | 894 test_ArgumentList_InstanceCreationExpression_typedefArg() { |
| 868 // ArgumentList InstanceCreationExpression ExpressionStatement Block | 895 // ArgumentList InstanceCreationExpression ExpressionStatement Block |
| 869 addSource('/libA.dart', ''' | 896 addSource( |
| 897 '/libA.dart', | |
| 898 ''' | |
| 870 library A; | 899 library A; |
| 871 typedef Funct(); | 900 typedef Funct(); |
| 872 class A { A(Funct f) { } } | 901 class A { A(Funct f) { } } |
| 873 bool hasLength(int expected) { } | 902 bool hasLength(int expected) { } |
| 874 void baz() { }'''); | 903 void baz() { }'''); |
| 875 addTestSource(''' | 904 addTestSource(''' |
| 876 import 'dart:async'; | 905 import 'dart:async'; |
| 877 import '/libA.dart'; | 906 import '/libA.dart'; |
| 878 class B { } | 907 class B { } |
| 879 String bar() => true; | 908 String bar() => true; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 895 assertSuggestImportedClass('Object', | 924 assertSuggestImportedClass('Object', |
| 896 kind: CompletionSuggestionKind.IDENTIFIER); | 925 kind: CompletionSuggestionKind.IDENTIFIER); |
| 897 assertNotSuggested('main'); | 926 assertNotSuggested('main'); |
| 898 assertNotSuggested('baz'); | 927 assertNotSuggested('baz'); |
| 899 assertNotSuggested('print'); | 928 assertNotSuggested('print'); |
| 900 }); | 929 }); |
| 901 } | 930 } |
| 902 | 931 |
| 903 test_ArgumentList_local_function() { | 932 test_ArgumentList_local_function() { |
| 904 // ArgumentList MethodInvocation ExpressionStatement Block | 933 // ArgumentList MethodInvocation ExpressionStatement Block |
| 905 addSource('/libA.dart', ''' | 934 addSource( |
| 935 '/libA.dart', | |
| 936 ''' | |
| 906 library A; | 937 library A; |
| 907 bool hasLength(int expected) { } | 938 bool hasLength(int expected) { } |
| 908 void baz() { }'''); | 939 void baz() { }'''); |
| 909 addTestSource(''' | 940 addTestSource(''' |
| 910 import '/libA.dart' | 941 import '/libA.dart' |
| 911 expect(arg) { } | 942 expect(arg) { } |
| 912 class B { } | 943 class B { } |
| 913 String bar() => true; | 944 String bar() => true; |
| 914 void main() {expect(^)}'''); | 945 void main() {expect(^)}'''); |
| 915 computeFast(); | 946 computeFast(); |
| 916 return computeFull((bool result) { | 947 return computeFull((bool result) { |
| 917 expect(request.replacementOffset, completionOffset); | 948 expect(request.replacementOffset, completionOffset); |
| 918 expect(request.replacementLength, 0); | 949 expect(request.replacementLength, 0); |
| 919 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); | 950 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); |
| 920 assertSuggestLocalFunction('bar', 'String'); | 951 assertSuggestLocalFunction('bar', 'String'); |
| 921 assertSuggestImportedFunction('hasLength', 'bool'); | 952 assertSuggestImportedFunction('hasLength', 'bool'); |
| 922 assertSuggestImportedFunction('identical', 'bool'); | 953 assertSuggestImportedFunction('identical', 'bool'); |
| 923 assertSuggestLocalClass('B'); | 954 assertSuggestLocalClass('B'); |
| 924 assertSuggestImportedClass('Object'); | 955 assertSuggestImportedClass('Object'); |
| 925 assertNotSuggested('main'); | 956 assertNotSuggested('main'); |
| 926 assertNotSuggested('baz'); | 957 assertNotSuggested('baz'); |
| 927 assertNotSuggested('print'); | 958 assertNotSuggested('print'); |
| 928 }); | 959 }); |
| 929 } | 960 } |
| 930 | 961 |
| 931 test_ArgumentList_local_method() { | 962 test_ArgumentList_local_method() { |
| 932 // ArgumentList MethodInvocation ExpressionStatement Block | 963 // ArgumentList MethodInvocation ExpressionStatement Block |
| 933 addSource('/libA.dart', ''' | 964 addSource( |
| 965 '/libA.dart', | |
| 966 ''' | |
| 934 library A; | 967 library A; |
| 935 bool hasLength(int expected) { } | 968 bool hasLength(int expected) { } |
| 936 void baz() { }'''); | 969 void baz() { }'''); |
| 937 addTestSource(''' | 970 addTestSource(''' |
| 938 import '/libA.dart' | 971 import '/libA.dart' |
| 939 class B { | 972 class B { |
| 940 expect(arg) { } | 973 expect(arg) { } |
| 941 void foo() {expect(^)}} | 974 void foo() {expect(^)}} |
| 942 String bar() => true;'''); | 975 String bar() => true;'''); |
| 943 computeFast(); | 976 computeFast(); |
| 944 return computeFull((bool result) { | 977 return computeFull((bool result) { |
| 945 expect(request.replacementOffset, completionOffset); | 978 expect(request.replacementOffset, completionOffset); |
| 946 expect(request.replacementLength, 0); | 979 expect(request.replacementLength, 0); |
| 947 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); | 980 assertNoSuggestions(kind: CompletionSuggestionKind.ARGUMENT_LIST); |
| 948 assertSuggestLocalFunction('bar', 'String'); | 981 assertSuggestLocalFunction('bar', 'String'); |
| 949 assertSuggestImportedFunction('hasLength', 'bool'); | 982 assertSuggestImportedFunction('hasLength', 'bool'); |
| 950 assertSuggestImportedFunction('identical', 'bool'); | 983 assertSuggestImportedFunction('identical', 'bool'); |
| 951 assertSuggestLocalClass('B'); | 984 assertSuggestLocalClass('B'); |
| 952 assertSuggestImportedClass('Object'); | 985 assertSuggestImportedClass('Object'); |
| 953 assertNotSuggested('main'); | 986 assertNotSuggested('main'); |
| 954 assertNotSuggested('baz'); | 987 assertNotSuggested('baz'); |
| 955 assertNotSuggested('print'); | 988 assertNotSuggested('print'); |
| 956 }); | 989 }); |
| 957 } | 990 } |
| 958 | 991 |
| 959 test_ArgumentList_MethodInvocation_functionalArg() { | 992 test_ArgumentList_MethodInvocation_functionalArg() { |
| 960 // ArgumentList MethodInvocation ExpressionStatement Block | 993 // ArgumentList MethodInvocation ExpressionStatement Block |
| 961 addSource('/libA.dart', ''' | 994 addSource( |
| 995 '/libA.dart', | |
| 996 ''' | |
| 962 library A; | 997 library A; |
| 963 class A { A(f()) { } } | 998 class A { A(f()) { } } |
| 964 bool hasLength(int expected) { } | 999 bool hasLength(int expected) { } |
| 965 void baz() { }'''); | 1000 void baz() { }'''); |
| 966 addTestSource(''' | 1001 addTestSource(''' |
| 967 import 'dart:async'; | 1002 import 'dart:async'; |
| 968 import '/libA.dart'; | 1003 import '/libA.dart'; |
| 969 class B { } | 1004 class B { } |
| 970 String bar(f()) => true; | 1005 String bar(f()) => true; |
| 971 void main() {bar(^);}'''); | 1006 void main() {bar(^);}'''); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 986 assertSuggestImportedClass('Object', | 1021 assertSuggestImportedClass('Object', |
| 987 kind: CompletionSuggestionKind.IDENTIFIER); | 1022 kind: CompletionSuggestionKind.IDENTIFIER); |
| 988 assertNotSuggested('main'); | 1023 assertNotSuggested('main'); |
| 989 assertNotSuggested('baz'); | 1024 assertNotSuggested('baz'); |
| 990 assertNotSuggested('print'); | 1025 assertNotSuggested('print'); |
| 991 }); | 1026 }); |
| 992 } | 1027 } |
| 993 | 1028 |
| 994 test_ArgumentList_MethodInvocation_methodArg() { | 1029 test_ArgumentList_MethodInvocation_methodArg() { |
| 995 // ArgumentList MethodInvocation ExpressionStatement Block | 1030 // ArgumentList MethodInvocation ExpressionStatement Block |
| 996 addSource('/libA.dart', ''' | 1031 addSource( |
| 1032 '/libA.dart', | |
| 1033 ''' | |
| 997 library A; | 1034 library A; |
| 998 class A { A(f()) { } } | 1035 class A { A(f()) { } } |
| 999 bool hasLength(int expected) { } | 1036 bool hasLength(int expected) { } |
| 1000 void baz() { }'''); | 1037 void baz() { }'''); |
| 1001 addTestSource(''' | 1038 addTestSource(''' |
| 1002 import 'dart:async'; | 1039 import 'dart:async'; |
| 1003 import '/libA.dart'; | 1040 import '/libA.dart'; |
| 1004 class B { String bar(f()) => true; } | 1041 class B { String bar(f()) => true; } |
| 1005 void main() {new B().bar(^);}'''); | 1042 void main() {new B().bar(^);}'''); |
| 1006 computeFast(); | 1043 computeFast(); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1019 kind: CompletionSuggestionKind.IDENTIFIER); | 1056 kind: CompletionSuggestionKind.IDENTIFIER); |
| 1020 assertNotSuggested('main'); | 1057 assertNotSuggested('main'); |
| 1021 assertNotSuggested('baz'); | 1058 assertNotSuggested('baz'); |
| 1022 assertNotSuggested('print'); | 1059 assertNotSuggested('print'); |
| 1023 }); | 1060 }); |
| 1024 } | 1061 } |
| 1025 | 1062 |
| 1026 test_ArgumentList_namedParam() { | 1063 test_ArgumentList_namedParam() { |
| 1027 // SimpleIdentifier NamedExpression ArgumentList MethodInvocation | 1064 // SimpleIdentifier NamedExpression ArgumentList MethodInvocation |
| 1028 // ExpressionStatement | 1065 // ExpressionStatement |
| 1029 addSource('/libA.dart', ''' | 1066 addSource( |
| 1067 '/libA.dart', | |
| 1068 ''' | |
| 1030 library A; | 1069 library A; |
| 1031 bool hasLength(int expected) { }'''); | 1070 bool hasLength(int expected) { }'''); |
| 1032 addTestSource(''' | 1071 addTestSource(''' |
| 1033 import '/libA.dart' | 1072 import '/libA.dart' |
| 1034 String bar() => true; | 1073 String bar() => true; |
| 1035 void main() {expect(foo: ^)}'''); | 1074 void main() {expect(foo: ^)}'''); |
| 1036 computeFast(); | 1075 computeFast(); |
| 1037 return computeFull((bool result) { | 1076 return computeFull((bool result) { |
| 1038 expect(request.replacementOffset, completionOffset); | 1077 expect(request.replacementOffset, completionOffset); |
| 1039 expect(request.replacementLength, 0); | 1078 expect(request.replacementLength, 0); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1218 expect(request.replacementLength, 0); | 1257 expect(request.replacementLength, 0); |
| 1219 assertSuggestLocalVariable('a', 'int'); | 1258 assertSuggestLocalVariable('a', 'int'); |
| 1220 assertSuggestImportedClass('Object'); | 1259 assertSuggestImportedClass('Object'); |
| 1221 assertNotSuggested('b'); | 1260 assertNotSuggested('b'); |
| 1222 assertNotSuggested('=='); | 1261 assertNotSuggested('=='); |
| 1223 }); | 1262 }); |
| 1224 } | 1263 } |
| 1225 | 1264 |
| 1226 test_Block() { | 1265 test_Block() { |
| 1227 // Block BlockFunctionBody MethodDeclaration | 1266 // Block BlockFunctionBody MethodDeclaration |
| 1228 addSource('/testAB.dart', ''' | 1267 addSource( |
| 1268 '/testAB.dart', | |
| 1269 ''' | |
| 1229 export "dart:math" hide max; | 1270 export "dart:math" hide max; |
| 1230 class A {int x;} | 1271 class A {int x;} |
| 1231 @deprecated D1() {int x;} | 1272 @deprecated D1() {int x;} |
| 1232 class _B {boo() { partBoo() {}} }'''); | 1273 class _B {boo() { partBoo() {}} }'''); |
| 1233 addSource('/testCD.dart', ''' | 1274 addSource( |
| 1275 '/testCD.dart', | |
| 1276 ''' | |
| 1234 String T1; | 1277 String T1; |
| 1235 var _T2; | 1278 var _T2; |
| 1236 class C { } | 1279 class C { } |
| 1237 class D { }'''); | 1280 class D { }'''); |
| 1238 addSource('/testEEF.dart', ''' | 1281 addSource( |
| 1282 '/testEEF.dart', | |
| 1283 ''' | |
| 1239 class EE { } | 1284 class EE { } |
| 1240 class F { }'''); | 1285 class F { }'''); |
| 1241 addSource('/testG.dart', 'class G { }'); | 1286 addSource('/testG.dart', 'class G { }'); |
| 1242 addSource('/testH.dart', ''' | 1287 addSource( |
| 1288 '/testH.dart', | |
| 1289 ''' | |
| 1243 class H { } | 1290 class H { } |
| 1244 int T3; | 1291 int T3; |
| 1245 var _T4;'''); // not imported | 1292 var _T4;'''); // not imported |
| 1246 addTestSource(''' | 1293 addTestSource(''' |
| 1247 import "/testAB.dart"; | 1294 import "/testAB.dart"; |
| 1248 import "/testCD.dart" hide D; | 1295 import "/testCD.dart" hide D; |
| 1249 import "/testEEF.dart" show EE; | 1296 import "/testEEF.dart" show EE; |
| 1250 import "/testG.dart" as g; | 1297 import "/testG.dart" as g; |
| 1251 int T5; | 1298 int T5; |
| 1252 var _T6; | 1299 var _T6; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1320 // TODO (danrubel) suggest HtmlElement as low relevance | 1367 // TODO (danrubel) suggest HtmlElement as low relevance |
| 1321 assertNotSuggested('HtmlElement'); | 1368 assertNotSuggested('HtmlElement'); |
| 1322 assertSuggestImportedClass('Uri'); | 1369 assertSuggestImportedClass('Uri'); |
| 1323 assertNotSuggested('parseIPv6Address'); | 1370 assertNotSuggested('parseIPv6Address'); |
| 1324 assertNotSuggested('parseHex'); | 1371 assertNotSuggested('parseHex'); |
| 1325 }); | 1372 }); |
| 1326 } | 1373 } |
| 1327 | 1374 |
| 1328 test_Block_final() { | 1375 test_Block_final() { |
| 1329 // Block BlockFunctionBody MethodDeclaration | 1376 // Block BlockFunctionBody MethodDeclaration |
| 1330 addSource('/testAB.dart', ''' | 1377 addSource( |
| 1378 '/testAB.dart', | |
| 1379 ''' | |
| 1331 export "dart:math" hide max; | 1380 export "dart:math" hide max; |
| 1332 class A {int x;} | 1381 class A {int x;} |
| 1333 @deprecated D1() {int x;} | 1382 @deprecated D1() {int x;} |
| 1334 class _B {boo() { partBoo() {}} }'''); | 1383 class _B {boo() { partBoo() {}} }'''); |
| 1335 addSource('/testCD.dart', ''' | 1384 addSource( |
| 1385 '/testCD.dart', | |
| 1386 ''' | |
| 1336 String T1; | 1387 String T1; |
| 1337 var _T2; | 1388 var _T2; |
| 1338 class C { } | 1389 class C { } |
| 1339 class D { }'''); | 1390 class D { }'''); |
| 1340 addSource('/testEEF.dart', ''' | 1391 addSource( |
| 1392 '/testEEF.dart', | |
| 1393 ''' | |
| 1341 class EE { } | 1394 class EE { } |
| 1342 class F { }'''); | 1395 class F { }'''); |
| 1343 addSource('/testG.dart', 'class G { }'); | 1396 addSource('/testG.dart', 'class G { }'); |
| 1344 addSource('/testH.dart', ''' | 1397 addSource( |
| 1398 '/testH.dart', | |
| 1399 ''' | |
| 1345 class H { } | 1400 class H { } |
| 1346 int T3; | 1401 int T3; |
| 1347 var _T4;'''); // not imported | 1402 var _T4;'''); // not imported |
| 1348 addTestSource(''' | 1403 addTestSource(''' |
| 1349 import "/testAB.dart"; | 1404 import "/testAB.dart"; |
| 1350 import "/testCD.dart" hide D; | 1405 import "/testCD.dart" hide D; |
| 1351 import "/testEEF.dart" show EE; | 1406 import "/testEEF.dart" show EE; |
| 1352 import "/testG.dart" as g; | 1407 import "/testG.dart" as g; |
| 1353 int T5; | 1408 int T5; |
| 1354 var _T6; | 1409 var _T6; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1435 test_Block_final3() { | 1490 test_Block_final3() { |
| 1436 addTestSource('main() {final ^ v;}'); | 1491 addTestSource('main() {final ^ v;}'); |
| 1437 computeFast(); | 1492 computeFast(); |
| 1438 return computeFull((bool result) { | 1493 return computeFull((bool result) { |
| 1439 assertSuggestImportedClass('String'); | 1494 assertSuggestImportedClass('String'); |
| 1440 }); | 1495 }); |
| 1441 } | 1496 } |
| 1442 | 1497 |
| 1443 test_Block_final_final() { | 1498 test_Block_final_final() { |
| 1444 // Block BlockFunctionBody MethodDeclaration | 1499 // Block BlockFunctionBody MethodDeclaration |
| 1445 addSource('/testAB.dart', ''' | 1500 addSource( |
| 1501 '/testAB.dart', | |
| 1502 ''' | |
| 1446 export "dart:math" hide max; | 1503 export "dart:math" hide max; |
| 1447 class A {int x;} | 1504 class A {int x;} |
| 1448 @deprecated D1() {int x;} | 1505 @deprecated D1() {int x;} |
| 1449 class _B {boo() { partBoo() {}} }'''); | 1506 class _B {boo() { partBoo() {}} }'''); |
| 1450 addSource('/testCD.dart', ''' | 1507 addSource( |
| 1508 '/testCD.dart', | |
| 1509 ''' | |
| 1451 String T1; | 1510 String T1; |
| 1452 var _T2; | 1511 var _T2; |
| 1453 class C { } | 1512 class C { } |
| 1454 class D { }'''); | 1513 class D { }'''); |
| 1455 addSource('/testEEF.dart', ''' | 1514 addSource( |
| 1515 '/testEEF.dart', | |
| 1516 ''' | |
| 1456 class EE { } | 1517 class EE { } |
| 1457 class F { }'''); | 1518 class F { }'''); |
| 1458 addSource('/testG.dart', 'class G { }'); | 1519 addSource('/testG.dart', 'class G { }'); |
| 1459 addSource('/testH.dart', ''' | 1520 addSource( |
| 1521 '/testH.dart', | |
| 1522 ''' | |
| 1460 class H { } | 1523 class H { } |
| 1461 int T3; | 1524 int T3; |
| 1462 var _T4;'''); // not imported | 1525 var _T4;'''); // not imported |
| 1463 addTestSource(''' | 1526 addTestSource(''' |
| 1464 import "/testAB.dart"; | 1527 import "/testAB.dart"; |
| 1465 import "/testCD.dart" hide D; | 1528 import "/testCD.dart" hide D; |
| 1466 import "/testEEF.dart" show EE; | 1529 import "/testEEF.dart" show EE; |
| 1467 import "/testG.dart" as g; | 1530 import "/testG.dart" as g; |
| 1468 int T5; | 1531 int T5; |
| 1469 var _T6; | 1532 var _T6; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1534 // TODO (danrubel) suggest HtmlElement as low relevance | 1597 // TODO (danrubel) suggest HtmlElement as low relevance |
| 1535 assertNotSuggested('HtmlElement'); | 1598 assertNotSuggested('HtmlElement'); |
| 1536 assertSuggestImportedClass('Uri'); | 1599 assertSuggestImportedClass('Uri'); |
| 1537 assertNotSuggested('parseIPv6Address'); | 1600 assertNotSuggested('parseIPv6Address'); |
| 1538 assertNotSuggested('parseHex'); | 1601 assertNotSuggested('parseHex'); |
| 1539 }); | 1602 }); |
| 1540 } | 1603 } |
| 1541 | 1604 |
| 1542 test_Block_final_var() { | 1605 test_Block_final_var() { |
| 1543 // Block BlockFunctionBody MethodDeclaration | 1606 // Block BlockFunctionBody MethodDeclaration |
| 1544 addSource('/testAB.dart', ''' | 1607 addSource( |
| 1608 '/testAB.dart', | |
| 1609 ''' | |
| 1545 export "dart:math" hide max; | 1610 export "dart:math" hide max; |
| 1546 class A {int x;} | 1611 class A {int x;} |
| 1547 @deprecated D1() {int x;} | 1612 @deprecated D1() {int x;} |
| 1548 class _B {boo() { partBoo() {}} }'''); | 1613 class _B {boo() { partBoo() {}} }'''); |
| 1549 addSource('/testCD.dart', ''' | 1614 addSource( |
| 1615 '/testCD.dart', | |
| 1616 ''' | |
| 1550 String T1; | 1617 String T1; |
| 1551 var _T2; | 1618 var _T2; |
| 1552 class C { } | 1619 class C { } |
| 1553 class D { }'''); | 1620 class D { }'''); |
| 1554 addSource('/testEEF.dart', ''' | 1621 addSource( |
| 1622 '/testEEF.dart', | |
| 1623 ''' | |
| 1555 class EE { } | 1624 class EE { } |
| 1556 class F { }'''); | 1625 class F { }'''); |
| 1557 addSource('/testG.dart', 'class G { }'); | 1626 addSource('/testG.dart', 'class G { }'); |
| 1558 addSource('/testH.dart', ''' | 1627 addSource( |
| 1628 '/testH.dart', | |
| 1629 ''' | |
| 1559 class H { } | 1630 class H { } |
| 1560 int T3; | 1631 int T3; |
| 1561 var _T4;'''); // not imported | 1632 var _T4;'''); // not imported |
| 1562 addTestSource(''' | 1633 addTestSource(''' |
| 1563 import "/testAB.dart"; | 1634 import "/testAB.dart"; |
| 1564 import "/testCD.dart" hide D; | 1635 import "/testCD.dart" hide D; |
| 1565 import "/testEEF.dart" show EE; | 1636 import "/testEEF.dart" show EE; |
| 1566 import "/testG.dart" as g; | 1637 import "/testG.dart" as g; |
| 1567 int T5; | 1638 int T5; |
| 1568 var _T6; | 1639 var _T6; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1632 assertNotSuggested('blog'); | 1703 assertNotSuggested('blog'); |
| 1633 // TODO (danrubel) suggest HtmlElement as low relevance | 1704 // TODO (danrubel) suggest HtmlElement as low relevance |
| 1634 assertNotSuggested('HtmlElement'); | 1705 assertNotSuggested('HtmlElement'); |
| 1635 assertSuggestImportedClass('Uri'); | 1706 assertSuggestImportedClass('Uri'); |
| 1636 assertNotSuggested('parseIPv6Address'); | 1707 assertNotSuggested('parseIPv6Address'); |
| 1637 assertNotSuggested('parseHex'); | 1708 assertNotSuggested('parseHex'); |
| 1638 }); | 1709 }); |
| 1639 } | 1710 } |
| 1640 | 1711 |
| 1641 test_Block_identifier_partial() { | 1712 test_Block_identifier_partial() { |
| 1642 addSource('/testAB.dart', ''' | 1713 addSource( |
| 1714 '/testAB.dart', | |
| 1715 ''' | |
| 1643 export "dart:math" hide max; | 1716 export "dart:math" hide max; |
| 1644 class A {int x;} | 1717 class A {int x;} |
| 1645 @deprecated D1() {int x;} | 1718 @deprecated D1() {int x;} |
| 1646 class _B { }'''); | 1719 class _B { }'''); |
| 1647 addSource('/testCD.dart', ''' | 1720 addSource( |
| 1721 '/testCD.dart', | |
| 1722 ''' | |
| 1648 String T1; | 1723 String T1; |
| 1649 var _T2; | 1724 var _T2; |
| 1650 class C { } | 1725 class C { } |
| 1651 class D { }'''); | 1726 class D { }'''); |
| 1652 addSource('/testEEF.dart', ''' | 1727 addSource( |
| 1728 '/testEEF.dart', | |
| 1729 ''' | |
| 1653 class EE { } | 1730 class EE { } |
| 1654 class F { }'''); | 1731 class F { }'''); |
| 1655 addSource('/testG.dart', 'class G { }'); | 1732 addSource('/testG.dart', 'class G { }'); |
| 1656 addSource('/testH.dart', ''' | 1733 addSource( |
| 1734 '/testH.dart', | |
| 1735 ''' | |
| 1657 class H { } | 1736 class H { } |
| 1658 class D3 { } | 1737 class D3 { } |
| 1659 int T3; | 1738 int T3; |
| 1660 var _T4;'''); // not imported | 1739 var _T4;'''); // not imported |
| 1661 addTestSource(''' | 1740 addTestSource(''' |
| 1662 import "/testAB.dart"; | 1741 import "/testAB.dart"; |
| 1663 import "/testCD.dart" hide D; | 1742 import "/testCD.dart" hide D; |
| 1664 import "/testEEF.dart" show EE; | 1743 import "/testEEF.dart" show EE; |
| 1665 import "/testG.dart" as g; | 1744 import "/testG.dart" as g; |
| 1666 int T5; | 1745 int T5; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1715 //assertSuggestLocalTopLevelVar('T5', 'int'); | 1794 //assertSuggestLocalTopLevelVar('T5', 'int'); |
| 1716 //assertSuggestLocalTopLevelVar('_T6', null); | 1795 //assertSuggestLocalTopLevelVar('_T6', null); |
| 1717 assertNotSuggested('=='); | 1796 assertNotSuggested('=='); |
| 1718 // TODO (danrubel) suggest HtmlElement as low relevance | 1797 // TODO (danrubel) suggest HtmlElement as low relevance |
| 1719 assertNotSuggested('HtmlElement'); | 1798 assertNotSuggested('HtmlElement'); |
| 1720 }); | 1799 }); |
| 1721 } | 1800 } |
| 1722 | 1801 |
| 1723 test_Block_inherited_imported() { | 1802 test_Block_inherited_imported() { |
| 1724 // Block BlockFunctionBody MethodDeclaration ClassDeclaration | 1803 // Block BlockFunctionBody MethodDeclaration ClassDeclaration |
| 1725 addSource('/testB.dart', ''' | 1804 addSource( |
| 1805 '/testB.dart', | |
| 1806 ''' | |
| 1726 lib B; | 1807 lib B; |
| 1727 class F { var f1; f2() { } get f3 => 0; set f4(fx) { } var _pf; } | 1808 class F { var f1; f2() { } get f3 => 0; set f4(fx) { } var _pf; } |
| 1728 class E extends F { var e1; e2() { } } | 1809 class E extends F { var e1; e2() { } } |
| 1729 class I { int i1; i2() { } } | 1810 class I { int i1; i2() { } } |
| 1730 class M { var m1; int m2() { } }'''); | 1811 class M { var m1; int m2() { } }'''); |
| 1731 addTestSource(''' | 1812 addTestSource(''' |
| 1732 import "/testB.dart"; | 1813 import "/testB.dart"; |
| 1733 class A extends E implements I with M {a() {^}}'''); | 1814 class A extends E implements I with M {a() {^}}'''); |
| 1734 computeFast(); | 1815 computeFast(); |
| 1735 return computeFull((bool result) { | 1816 return computeFull((bool result) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1771 assertSuggestLocalGetter('f3', null); | 1852 assertSuggestLocalGetter('f3', null); |
| 1772 assertSuggestLocalSetter('f4'); | 1853 assertSuggestLocalSetter('f4'); |
| 1773 assertSuggestLocalMethod('e2', 'E', null); | 1854 assertSuggestLocalMethod('e2', 'E', null); |
| 1774 assertSuggestLocalMethod('f2', 'F', null); | 1855 assertSuggestLocalMethod('f2', 'F', null); |
| 1775 assertSuggestLocalMethod('i2', 'I', null); | 1856 assertSuggestLocalMethod('i2', 'I', null); |
| 1776 assertSuggestLocalMethod('m2', 'M', 'int'); | 1857 assertSuggestLocalMethod('m2', 'M', 'int'); |
| 1777 }); | 1858 }); |
| 1778 } | 1859 } |
| 1779 | 1860 |
| 1780 test_Block_local_function() { | 1861 test_Block_local_function() { |
| 1781 addSource('/testAB.dart', ''' | 1862 addSource( |
| 1863 '/testAB.dart', | |
| 1864 ''' | |
| 1782 export "dart:math" hide max; | 1865 export "dart:math" hide max; |
| 1783 class A {int x;} | 1866 class A {int x;} |
| 1784 @deprecated D1() {int x;} | 1867 @deprecated D1() {int x;} |
| 1785 class _B {boo() { partBoo() {}} }'''); | 1868 class _B {boo() { partBoo() {}} }'''); |
| 1786 addSource('/testCD.dart', ''' | 1869 addSource( |
| 1870 '/testCD.dart', | |
| 1871 ''' | |
| 1787 String T1; | 1872 String T1; |
| 1788 var _T2; | 1873 var _T2; |
| 1789 class C { } | 1874 class C { } |
| 1790 class D { }'''); | 1875 class D { }'''); |
| 1791 addSource('/testEEF.dart', ''' | 1876 addSource( |
| 1877 '/testEEF.dart', | |
| 1878 ''' | |
| 1792 class EE { } | 1879 class EE { } |
| 1793 class F { }'''); | 1880 class F { }'''); |
| 1794 addSource('/testG.dart', 'class G { }'); | 1881 addSource('/testG.dart', 'class G { }'); |
| 1795 addSource('/testH.dart', ''' | 1882 addSource( |
| 1883 '/testH.dart', | |
| 1884 ''' | |
| 1796 class H { } | 1885 class H { } |
| 1797 int T3; | 1886 int T3; |
| 1798 var _T4;'''); // not imported | 1887 var _T4;'''); // not imported |
| 1799 addTestSource(''' | 1888 addTestSource(''' |
| 1800 import "/testAB.dart"; | 1889 import "/testAB.dart"; |
| 1801 import "/testCD.dart" hide D; | 1890 import "/testCD.dart" hide D; |
| 1802 import "/testEEF.dart" show EE; | 1891 import "/testEEF.dart" show EE; |
| 1803 import "/testG.dart" as g; | 1892 import "/testG.dart" as g; |
| 1804 int T5; | 1893 int T5; |
| 1805 var _T6; | 1894 var _T6; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1844 // TODO(danrubel) implement | 1933 // TODO(danrubel) implement |
| 1845 assertSuggestImportedClass('Foo2', | 1934 assertSuggestImportedClass('Foo2', |
| 1846 relevance: DART_RELEVANCE_LOW, importUri: 'package:myBar/bar.dart'); | 1935 relevance: DART_RELEVANCE_LOW, importUri: 'package:myBar/bar.dart'); |
| 1847 assertSuggestImportedClass('Future', | 1936 assertSuggestImportedClass('Future', |
| 1848 relevance: DART_RELEVANCE_LOW, importUri: 'dart:async'); | 1937 relevance: DART_RELEVANCE_LOW, importUri: 'dart:async'); |
| 1849 }); | 1938 }); |
| 1850 } | 1939 } |
| 1851 | 1940 |
| 1852 test_CascadeExpression_selector1() { | 1941 test_CascadeExpression_selector1() { |
| 1853 // PropertyAccess CascadeExpression ExpressionStatement Block | 1942 // PropertyAccess CascadeExpression ExpressionStatement Block |
| 1854 addSource('/testB.dart', ''' | 1943 addSource( |
| 1944 '/testB.dart', | |
| 1945 ''' | |
| 1855 class B { }'''); | 1946 class B { }'''); |
| 1856 addTestSource(''' | 1947 addTestSource(''' |
| 1857 import "/testB.dart"; | 1948 import "/testB.dart"; |
| 1858 class A {var b; X _c;} | 1949 class A {var b; X _c;} |
| 1859 class X{} | 1950 class X{} |
| 1860 // looks like a cascade to the parser | 1951 // looks like a cascade to the parser |
| 1861 // but the user is trying to get completions for a non-cascade | 1952 // but the user is trying to get completions for a non-cascade |
| 1862 main() {A a; a.^.z}'''); | 1953 main() {A a; a.^.z}'''); |
| 1863 computeFast(); | 1954 computeFast(); |
| 1864 return computeFull((bool result) { | 1955 return computeFull((bool result) { |
| 1865 expect(request.replacementOffset, completionOffset); | 1956 expect(request.replacementOffset, completionOffset); |
| 1866 expect(request.replacementLength, 0); | 1957 expect(request.replacementLength, 0); |
| 1867 assertSuggestInvocationField('b', null); | 1958 assertSuggestInvocationField('b', null); |
| 1868 assertSuggestInvocationField('_c', 'X'); | 1959 assertSuggestInvocationField('_c', 'X'); |
| 1869 assertNotSuggested('Object'); | 1960 assertNotSuggested('Object'); |
| 1870 assertNotSuggested('A'); | 1961 assertNotSuggested('A'); |
| 1871 assertNotSuggested('B'); | 1962 assertNotSuggested('B'); |
| 1872 assertNotSuggested('X'); | 1963 assertNotSuggested('X'); |
| 1873 assertNotSuggested('z'); | 1964 assertNotSuggested('z'); |
| 1874 assertNotSuggested('=='); | 1965 assertNotSuggested('=='); |
| 1875 }); | 1966 }); |
| 1876 } | 1967 } |
| 1877 | 1968 |
| 1878 test_CascadeExpression_selector2() { | 1969 test_CascadeExpression_selector2() { |
| 1879 // SimpleIdentifier PropertyAccess CascadeExpression ExpressionStatement | 1970 // SimpleIdentifier PropertyAccess CascadeExpression ExpressionStatement |
| 1880 addSource('/testB.dart', ''' | 1971 addSource( |
| 1972 '/testB.dart', | |
| 1973 ''' | |
| 1881 class B { }'''); | 1974 class B { }'''); |
| 1882 addTestSource(''' | 1975 addTestSource(''' |
| 1883 import "/testB.dart"; | 1976 import "/testB.dart"; |
| 1884 class A {var b; X _c;} | 1977 class A {var b; X _c;} |
| 1885 class X{} | 1978 class X{} |
| 1886 main() {A a; a..^z}'''); | 1979 main() {A a; a..^z}'''); |
| 1887 computeFast(); | 1980 computeFast(); |
| 1888 return computeFull((bool result) { | 1981 return computeFull((bool result) { |
| 1889 expect(request.replacementOffset, completionOffset); | 1982 expect(request.replacementOffset, completionOffset); |
| 1890 expect(request.replacementLength, 1); | 1983 expect(request.replacementLength, 1); |
| 1891 assertSuggestInvocationField('b', null); | 1984 assertSuggestInvocationField('b', null); |
| 1892 assertSuggestInvocationField('_c', 'X'); | 1985 assertSuggestInvocationField('_c', 'X'); |
| 1893 assertNotSuggested('Object'); | 1986 assertNotSuggested('Object'); |
| 1894 assertNotSuggested('A'); | 1987 assertNotSuggested('A'); |
| 1895 assertNotSuggested('B'); | 1988 assertNotSuggested('B'); |
| 1896 assertNotSuggested('X'); | 1989 assertNotSuggested('X'); |
| 1897 assertNotSuggested('z'); | 1990 assertNotSuggested('z'); |
| 1898 assertNotSuggested('=='); | 1991 assertNotSuggested('=='); |
| 1899 }); | 1992 }); |
| 1900 } | 1993 } |
| 1901 | 1994 |
| 1902 test_CascadeExpression_selector2_withTrailingReturn() { | 1995 test_CascadeExpression_selector2_withTrailingReturn() { |
| 1903 // PropertyAccess CascadeExpression ExpressionStatement Block | 1996 // PropertyAccess CascadeExpression ExpressionStatement Block |
| 1904 addSource('/testB.dart', ''' | 1997 addSource( |
| 1998 '/testB.dart', | |
| 1999 ''' | |
| 1905 class B { }'''); | 2000 class B { }'''); |
| 1906 addTestSource(''' | 2001 addTestSource(''' |
| 1907 import "/testB.dart"; | 2002 import "/testB.dart"; |
| 1908 class A {var b; X _c;} | 2003 class A {var b; X _c;} |
| 1909 class X{} | 2004 class X{} |
| 1910 main() {A a; a..^ return}'''); | 2005 main() {A a; a..^ return}'''); |
| 1911 computeFast(); | 2006 computeFast(); |
| 1912 return computeFull((bool result) { | 2007 return computeFull((bool result) { |
| 1913 expect(request.replacementOffset, completionOffset); | 2008 expect(request.replacementOffset, completionOffset); |
| 1914 expect(request.replacementLength, 0); | 2009 expect(request.replacementLength, 0); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1995 assertSuggestParameter('e', null); | 2090 assertSuggestParameter('e', null); |
| 1996 assertSuggestParameter('s', 'StackTrace'); | 2091 assertSuggestParameter('s', 'StackTrace'); |
| 1997 assertSuggestLocalMethod('a', 'A', null); | 2092 assertSuggestLocalMethod('a', 'A', null); |
| 1998 assertSuggestImportedClass('Object'); | 2093 assertSuggestImportedClass('Object'); |
| 1999 assertNotSuggested('x'); | 2094 assertNotSuggested('x'); |
| 2000 }); | 2095 }); |
| 2001 } | 2096 } |
| 2002 | 2097 |
| 2003 test_ClassDeclaration_body() { | 2098 test_ClassDeclaration_body() { |
| 2004 // ClassDeclaration CompilationUnit | 2099 // ClassDeclaration CompilationUnit |
| 2005 addSource('/testB.dart', ''' | 2100 addSource( |
| 2101 '/testB.dart', | |
| 2102 ''' | |
| 2006 class B { }'''); | 2103 class B { }'''); |
| 2007 addTestSource(''' | 2104 addTestSource(''' |
| 2008 import "testB.dart" as x; | 2105 import "testB.dart" as x; |
| 2009 @deprecated class A {^} | 2106 @deprecated class A {^} |
| 2010 class _B {} | 2107 class _B {} |
| 2011 A T;'''); | 2108 A T;'''); |
| 2012 computeFast(); | 2109 computeFast(); |
| 2013 return computeFull((bool result) { | 2110 return computeFull((bool result) { |
| 2014 expect(request.replacementOffset, completionOffset); | 2111 expect(request.replacementOffset, completionOffset); |
| 2015 expect(request.replacementLength, 0); | 2112 expect(request.replacementLength, 0); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 2029 expect(suggestionO.element.isDeprecated, isFalse); | 2126 expect(suggestionO.element.isDeprecated, isFalse); |
| 2030 expect(suggestionO.element.isPrivate, isFalse); | 2127 expect(suggestionO.element.isPrivate, isFalse); |
| 2031 } | 2128 } |
| 2032 assertNotSuggested('T'); | 2129 assertNotSuggested('T'); |
| 2033 assertSuggestLibraryPrefix('x'); | 2130 assertSuggestLibraryPrefix('x'); |
| 2034 }); | 2131 }); |
| 2035 } | 2132 } |
| 2036 | 2133 |
| 2037 test_ClassDeclaration_body_final() { | 2134 test_ClassDeclaration_body_final() { |
| 2038 // ClassDeclaration CompilationUnit | 2135 // ClassDeclaration CompilationUnit |
| 2039 addSource('/testB.dart', ''' | 2136 addSource( |
| 2137 '/testB.dart', | |
| 2138 ''' | |
| 2040 class B { }'''); | 2139 class B { }'''); |
| 2041 addTestSource(''' | 2140 addTestSource(''' |
| 2042 import "testB.dart" as x; | 2141 import "testB.dart" as x; |
| 2043 class A {final ^} | 2142 class A {final ^} |
| 2044 class _B {} | 2143 class _B {} |
| 2045 A T;'''); | 2144 A T;'''); |
| 2046 computeFast(); | 2145 computeFast(); |
| 2047 return computeFull((bool result) { | 2146 return computeFull((bool result) { |
| 2048 expect(request.replacementOffset, completionOffset); | 2147 expect(request.replacementOffset, completionOffset); |
| 2049 expect(request.replacementLength, 0); | 2148 expect(request.replacementLength, 0); |
| 2050 assertSuggestLocalClass('A'); | 2149 assertSuggestLocalClass('A'); |
| 2051 assertSuggestLocalClass('_B'); | 2150 assertSuggestLocalClass('_B'); |
| 2052 assertSuggestImportedClass('Object'); | 2151 assertSuggestImportedClass('Object'); |
| 2053 assertNotSuggested('T'); | 2152 assertNotSuggested('T'); |
| 2054 assertSuggestLibraryPrefix('x'); | 2153 assertSuggestLibraryPrefix('x'); |
| 2055 }); | 2154 }); |
| 2056 } | 2155 } |
| 2057 | 2156 |
| 2157 test_ClassDeclaration_body_final_field() { | |
| 2158 // ClassDeclaration CompilationUnit | |
| 2159 addSource( | |
| 2160 '/testB.dart', | |
| 2161 ''' | |
| 2162 class B { }'''); | |
| 2163 addTestSource(''' | |
| 2164 import "testB.dart" as x; | |
| 2165 class A {final ^ A(){}} | |
| 2166 class _B {} | |
| 2167 A T;'''); | |
| 2168 computeFast(); | |
| 2169 return computeFull((bool result) { | |
| 2170 expect(request.replacementOffset, completionOffset); | |
| 2171 expect(request.replacementLength, 0); | |
| 2172 assertSuggestLocalClass('A'); | |
| 2173 assertSuggestLocalClass('_B'); | |
| 2174 assertSuggestImportedClass('String'); | |
| 2175 assertNotSuggested('T'); | |
| 2176 assertSuggestLibraryPrefix('x'); | |
| 2177 }); | |
| 2178 } | |
| 2179 | |
| 2180 test_ClassDeclaration_body_final_field2() { | |
| 2181 // ClassDeclaration CompilationUnit | |
| 2182 addSource( | |
| 2183 '/testB.dart', | |
| 2184 ''' | |
| 2185 class B { }'''); | |
| 2186 addTestSource(''' | |
| 2187 import "testB.dart" as Soo; | |
| 2188 class A {final S^ A();} | |
| 2189 class _B {} | |
| 2190 A Sew;'''); | |
| 2191 computeFast(); | |
| 2192 return computeFull((bool result) { | |
| 2193 expect(request.replacementOffset, completionOffset - 1); | |
| 2194 expect(request.replacementLength, 1); | |
| 2195 assertSuggestLocalClass('A'); | |
| 2196 assertSuggestLocalClass('_B'); | |
| 2197 assertSuggestImportedClass('String'); | |
| 2198 assertNotSuggested('Sew'); | |
| 2199 assertSuggestLibraryPrefix('Soo'); | |
| 2200 }); | |
| 2201 } | |
| 2202 | |
| 2058 test_ClassDeclaration_body_final_final() { | 2203 test_ClassDeclaration_body_final_final() { |
| 2059 // ClassDeclaration CompilationUnit | 2204 // ClassDeclaration CompilationUnit |
| 2060 addSource('/testB.dart', ''' | 2205 addSource( |
| 2206 '/testB.dart', | |
| 2207 ''' | |
| 2061 class B { }'''); | 2208 class B { }'''); |
| 2062 addTestSource(''' | 2209 addTestSource(''' |
| 2063 import "testB.dart" as x; | 2210 import "testB.dart" as x; |
| 2064 class A {final ^ final foo;} | 2211 class A {final ^ final foo;} |
| 2065 class _B {} | 2212 class _B {} |
| 2066 A T;'''); | 2213 A T;'''); |
| 2067 computeFast(); | 2214 computeFast(); |
| 2068 return computeFull((bool result) { | 2215 return computeFull((bool result) { |
| 2069 expect(request.replacementOffset, completionOffset); | 2216 expect(request.replacementOffset, completionOffset); |
| 2070 expect(request.replacementLength, 0); | 2217 expect(request.replacementLength, 0); |
| 2071 assertSuggestLocalClass('A'); | 2218 assertSuggestLocalClass('A'); |
| 2072 assertSuggestLocalClass('_B'); | 2219 assertSuggestLocalClass('_B'); |
| 2073 assertSuggestImportedClass('Object'); | 2220 assertSuggestImportedClass('Object'); |
| 2074 assertNotSuggested('T'); | 2221 assertNotSuggested('T'); |
| 2075 assertSuggestLibraryPrefix('x'); | 2222 assertSuggestLibraryPrefix('x'); |
| 2076 }); | 2223 }); |
| 2077 } | 2224 } |
| 2078 | 2225 |
| 2079 test_ClassDeclaration_body_final_var() { | 2226 test_ClassDeclaration_body_final_var() { |
| 2080 // ClassDeclaration CompilationUnit | 2227 // ClassDeclaration CompilationUnit |
| 2081 addSource('/testB.dart', ''' | 2228 addSource( |
| 2229 '/testB.dart', | |
| 2230 ''' | |
| 2082 class B { }'''); | 2231 class B { }'''); |
| 2083 addTestSource(''' | 2232 addTestSource(''' |
| 2084 import "testB.dart" as x; | 2233 import "testB.dart" as x; |
| 2085 class A {final ^ var foo;} | 2234 class A {final ^ var foo;} |
| 2086 class _B {} | 2235 class _B {} |
| 2087 A T;'''); | 2236 A T;'''); |
| 2088 computeFast(); | 2237 computeFast(); |
| 2089 return computeFull((bool result) { | 2238 return computeFull((bool result) { |
| 2090 expect(request.replacementOffset, completionOffset); | 2239 expect(request.replacementOffset, completionOffset); |
| 2091 expect(request.replacementLength, 0); | 2240 expect(request.replacementLength, 0); |
| 2092 assertSuggestLocalClass('A'); | 2241 assertSuggestLocalClass('A'); |
| 2093 assertSuggestLocalClass('_B'); | 2242 assertSuggestLocalClass('_B'); |
| 2094 assertSuggestImportedClass('Object'); | 2243 assertSuggestImportedClass('Object'); |
| 2095 assertNotSuggested('T'); | 2244 assertNotSuggested('T'); |
| 2096 assertSuggestLibraryPrefix('x'); | 2245 assertSuggestLibraryPrefix('x'); |
| 2097 }); | 2246 }); |
| 2098 } | 2247 } |
| 2099 | 2248 |
| 2100 test_Combinator_hide() { | 2249 test_Combinator_hide() { |
| 2101 // SimpleIdentifier HideCombinator ImportDirective | 2250 // SimpleIdentifier HideCombinator ImportDirective |
| 2102 addSource('/testAB.dart', ''' | 2251 addSource( |
| 2252 '/testAB.dart', | |
| 2253 ''' | |
| 2103 library libAB; | 2254 library libAB; |
| 2104 part '/partAB.dart'; | 2255 part '/partAB.dart'; |
| 2105 class A { } | 2256 class A { } |
| 2106 class B { }'''); | 2257 class B { }'''); |
| 2107 addSource('/partAB.dart', ''' | 2258 addSource( |
| 2259 '/partAB.dart', | |
| 2260 ''' | |
| 2108 part of libAB; | 2261 part of libAB; |
| 2109 var T1; | 2262 var T1; |
| 2110 PB F1() => new PB(); | 2263 PB F1() => new PB(); |
| 2111 class PB { }'''); | 2264 class PB { }'''); |
| 2112 addSource('/testCD.dart', ''' | 2265 addSource( |
| 2266 '/testCD.dart', | |
| 2267 ''' | |
| 2113 class C { } | 2268 class C { } |
| 2114 class D { }'''); | 2269 class D { }'''); |
| 2115 addTestSource(''' | 2270 addTestSource(''' |
| 2116 import "/testAB.dart" hide ^; | 2271 import "/testAB.dart" hide ^; |
| 2117 import "/testCD.dart"; | 2272 import "/testCD.dart"; |
| 2118 class X {}'''); | 2273 class X {}'''); |
| 2119 computeFast(); | 2274 computeFast(); |
| 2120 return computeFull((bool result) { | 2275 return computeFull((bool result) { |
| 2121 assertNoSuggestions(); | 2276 assertNoSuggestions(); |
| 2122 }); | 2277 }); |
| 2123 } | 2278 } |
| 2124 | 2279 |
| 2125 test_Combinator_show() { | 2280 test_Combinator_show() { |
| 2126 // SimpleIdentifier HideCombinator ImportDirective | 2281 // SimpleIdentifier HideCombinator ImportDirective |
| 2127 addSource('/testAB.dart', ''' | 2282 addSource( |
| 2283 '/testAB.dart', | |
| 2284 ''' | |
| 2128 library libAB; | 2285 library libAB; |
| 2129 part '/partAB.dart'; | 2286 part '/partAB.dart'; |
| 2130 class A { } | 2287 class A { } |
| 2131 class B { }'''); | 2288 class B { }'''); |
| 2132 addSource('/partAB.dart', ''' | 2289 addSource( |
| 2290 '/partAB.dart', | |
| 2291 ''' | |
| 2133 part of libAB; | 2292 part of libAB; |
| 2134 var T1; | 2293 var T1; |
| 2135 PB F1() => new PB(); | 2294 PB F1() => new PB(); |
| 2136 typedef PB2 F2(int blat); | 2295 typedef PB2 F2(int blat); |
| 2137 class Clz = Object with Object; | 2296 class Clz = Object with Object; |
| 2138 class PB { }'''); | 2297 class PB { }'''); |
| 2139 addSource('/testCD.dart', ''' | 2298 addSource( |
| 2299 '/testCD.dart', | |
| 2300 ''' | |
| 2140 class C { } | 2301 class C { } |
| 2141 class D { }'''); | 2302 class D { }'''); |
| 2142 addTestSource(''' | 2303 addTestSource(''' |
| 2143 import "/testAB.dart" show ^; | 2304 import "/testAB.dart" show ^; |
| 2144 import "/testCD.dart"; | 2305 import "/testCD.dart"; |
| 2145 class X {}'''); | 2306 class X {}'''); |
| 2146 computeFast(); | 2307 computeFast(); |
| 2147 return computeFull((bool result) { | 2308 return computeFull((bool result) { |
| 2148 assertNoSuggestions(); | 2309 assertNoSuggestions(); |
| 2149 }); | 2310 }); |
| 2150 } | 2311 } |
| 2151 | 2312 |
| 2152 test_ConditionalExpression_elseExpression() { | 2313 test_ConditionalExpression_elseExpression() { |
| 2153 // SimpleIdentifier ConditionalExpression ReturnStatement | 2314 // SimpleIdentifier ConditionalExpression ReturnStatement |
| 2154 addSource('/testA.dart', ''' | 2315 addSource( |
| 2316 '/testA.dart', | |
| 2317 ''' | |
| 2155 int T1; | 2318 int T1; |
| 2156 F1() { } | 2319 F1() { } |
| 2157 class A {int x;}'''); | 2320 class A {int x;}'''); |
| 2158 addTestSource(''' | 2321 addTestSource(''' |
| 2159 import "/testA.dart"; | 2322 import "/testA.dart"; |
| 2160 int T2; | 2323 int T2; |
| 2161 F2() { } | 2324 F2() { } |
| 2162 class B {int x;} | 2325 class B {int x;} |
| 2163 class C {foo(){var f; {var x;} return a ? T1 : T^}}'''); | 2326 class C {foo(){var f; {var x;} return a ? T1 : T^}}'''); |
| 2164 computeFast(); | 2327 computeFast(); |
| 2165 return computeFull((bool result) { | 2328 return computeFull((bool result) { |
| 2166 // top level results are partially filtered based on first char | 2329 // top level results are partially filtered based on first char |
| 2167 assertSuggestLocalTopLevelVar('T2', 'int'); | 2330 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2168 // TODO (danrubel) getter is being suggested instead of top level var | 2331 // TODO (danrubel) getter is being suggested instead of top level var |
| 2169 //assertSuggestImportedTopLevelVar('T1', 'int'); | 2332 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2170 }); | 2333 }); |
| 2171 } | 2334 } |
| 2172 | 2335 |
| 2173 test_ConditionalExpression_elseExpression_empty() { | 2336 test_ConditionalExpression_elseExpression_empty() { |
| 2174 // SimpleIdentifier ConditionalExpression ReturnStatement | 2337 // SimpleIdentifier ConditionalExpression ReturnStatement |
| 2175 addSource('/testA.dart', ''' | 2338 addSource( |
| 2339 '/testA.dart', | |
| 2340 ''' | |
| 2176 int T1; | 2341 int T1; |
| 2177 F1() { } | 2342 F1() { } |
| 2178 class A {int x;}'''); | 2343 class A {int x;}'''); |
| 2179 addTestSource(''' | 2344 addTestSource(''' |
| 2180 import "/testA.dart"; | 2345 import "/testA.dart"; |
| 2181 int T2; | 2346 int T2; |
| 2182 F2() { } | 2347 F2() { } |
| 2183 class B {int x;} | 2348 class B {int x;} |
| 2184 class C {foo(){var f; {var x;} return a ? T1 : ^}}'''); | 2349 class C {foo(){var f; {var x;} return a ? T1 : ^}}'''); |
| 2185 computeFast(); | 2350 computeFast(); |
| 2186 return computeFull((bool result) { | 2351 return computeFull((bool result) { |
| 2187 assertNotSuggested('x'); | 2352 assertNotSuggested('x'); |
| 2188 assertSuggestLocalVariable('f', null); | 2353 assertSuggestLocalVariable('f', null); |
| 2189 assertSuggestLocalMethod('foo', 'C', null); | 2354 assertSuggestLocalMethod('foo', 'C', null); |
| 2190 assertSuggestLocalClass('C'); | 2355 assertSuggestLocalClass('C'); |
| 2191 assertSuggestLocalFunction('F2', null); | 2356 assertSuggestLocalFunction('F2', null); |
| 2192 assertSuggestLocalTopLevelVar('T2', 'int'); | 2357 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2193 assertSuggestImportedClass('A'); | 2358 assertSuggestImportedClass('A'); |
| 2194 assertSuggestImportedFunction('F1', null); | 2359 assertSuggestImportedFunction('F1', null); |
| 2195 // TODO (danrubel) getter is being suggested instead of top level var | 2360 // TODO (danrubel) getter is being suggested instead of top level var |
| 2196 //assertSuggestImportedTopLevelVar('T1', 'int'); | 2361 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2197 }); | 2362 }); |
| 2198 } | 2363 } |
| 2199 | 2364 |
| 2200 test_ConditionalExpression_partial_thenExpression() { | 2365 test_ConditionalExpression_partial_thenExpression() { |
| 2201 // SimpleIdentifier ConditionalExpression ReturnStatement | 2366 // SimpleIdentifier ConditionalExpression ReturnStatement |
| 2202 addSource('/testA.dart', ''' | 2367 addSource( |
| 2368 '/testA.dart', | |
| 2369 ''' | |
| 2203 int T1; | 2370 int T1; |
| 2204 F1() { } | 2371 F1() { } |
| 2205 class A {int x;}'''); | 2372 class A {int x;}'''); |
| 2206 addTestSource(''' | 2373 addTestSource(''' |
| 2207 import "/testA.dart"; | 2374 import "/testA.dart"; |
| 2208 int T2; | 2375 int T2; |
| 2209 F2() { } | 2376 F2() { } |
| 2210 class B {int x;} | 2377 class B {int x;} |
| 2211 class C {foo(){var f; {var x;} return a ? T^}}'''); | 2378 class C {foo(){var f; {var x;} return a ? T^}}'''); |
| 2212 computeFast(); | 2379 computeFast(); |
| 2213 return computeFull((bool result) { | 2380 return computeFull((bool result) { |
| 2214 // top level results are partially filtered based on first char | 2381 // top level results are partially filtered based on first char |
| 2215 assertSuggestLocalTopLevelVar('T2', 'int'); | 2382 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2216 // TODO (danrubel) getter is being suggested instead of top level var | 2383 // TODO (danrubel) getter is being suggested instead of top level var |
| 2217 //assertSuggestImportedTopLevelVar('T1', 'int'); | 2384 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2218 }); | 2385 }); |
| 2219 } | 2386 } |
| 2220 | 2387 |
| 2221 test_ConditionalExpression_partial_thenExpression_empty() { | 2388 test_ConditionalExpression_partial_thenExpression_empty() { |
| 2222 // SimpleIdentifier ConditionalExpression ReturnStatement | 2389 // SimpleIdentifier ConditionalExpression ReturnStatement |
| 2223 addSource('/testA.dart', ''' | 2390 addSource( |
| 2391 '/testA.dart', | |
| 2392 ''' | |
| 2224 int T1; | 2393 int T1; |
| 2225 F1() { } | 2394 F1() { } |
| 2226 class A {int x;}'''); | 2395 class A {int x;}'''); |
| 2227 addTestSource(''' | 2396 addTestSource(''' |
| 2228 import "/testA.dart"; | 2397 import "/testA.dart"; |
| 2229 int T2; | 2398 int T2; |
| 2230 F2() { } | 2399 F2() { } |
| 2231 class B {int x;} | 2400 class B {int x;} |
| 2232 class C {foo(){var f; {var x;} return a ? ^}}'''); | 2401 class C {foo(){var f; {var x;} return a ? ^}}'''); |
| 2233 computeFast(); | 2402 computeFast(); |
| 2234 return computeFull((bool result) { | 2403 return computeFull((bool result) { |
| 2235 assertNotSuggested('x'); | 2404 assertNotSuggested('x'); |
| 2236 assertSuggestLocalVariable('f', null); | 2405 assertSuggestLocalVariable('f', null); |
| 2237 assertSuggestLocalMethod('foo', 'C', null); | 2406 assertSuggestLocalMethod('foo', 'C', null); |
| 2238 assertSuggestLocalClass('C'); | 2407 assertSuggestLocalClass('C'); |
| 2239 assertSuggestLocalFunction('F2', null); | 2408 assertSuggestLocalFunction('F2', null); |
| 2240 assertSuggestLocalTopLevelVar('T2', 'int'); | 2409 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2241 assertSuggestImportedClass('A'); | 2410 assertSuggestImportedClass('A'); |
| 2242 assertSuggestImportedFunction('F1', null); | 2411 assertSuggestImportedFunction('F1', null); |
| 2243 // TODO (danrubel) getter is being suggested instead of top level var | 2412 // TODO (danrubel) getter is being suggested instead of top level var |
| 2244 //assertSuggestImportedTopLevelVar('T1', 'int'); | 2413 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2245 }); | 2414 }); |
| 2246 } | 2415 } |
| 2247 | 2416 |
| 2248 test_ConditionalExpression_thenExpression() { | 2417 test_ConditionalExpression_thenExpression() { |
| 2249 // SimpleIdentifier ConditionalExpression ReturnStatement | 2418 // SimpleIdentifier ConditionalExpression ReturnStatement |
| 2250 addSource('/testA.dart', ''' | 2419 addSource( |
| 2420 '/testA.dart', | |
| 2421 ''' | |
| 2251 int T1; | 2422 int T1; |
| 2252 F1() { } | 2423 F1() { } |
| 2253 class A {int x;}'''); | 2424 class A {int x;}'''); |
| 2254 addTestSource(''' | 2425 addTestSource(''' |
| 2255 import "/testA.dart"; | 2426 import "/testA.dart"; |
| 2256 int T2; | 2427 int T2; |
| 2257 F2() { } | 2428 F2() { } |
| 2258 class B {int x;} | 2429 class B {int x;} |
| 2259 class C {foo(){var f; {var x;} return a ? T^ : c}}'''); | 2430 class C {foo(){var f; {var x;} return a ? T^ : c}}'''); |
| 2260 computeFast(); | 2431 computeFast(); |
| 2261 return computeFull((bool result) { | 2432 return computeFull((bool result) { |
| 2262 // top level results are partially filtered based on first char | 2433 // top level results are partially filtered based on first char |
| 2263 assertSuggestLocalTopLevelVar('T2', 'int'); | 2434 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2264 // TODO (danrubel) getter is being suggested instead of top level var | 2435 // TODO (danrubel) getter is being suggested instead of top level var |
| 2265 //assertSuggestImportedTopLevelVar('T1', 'int'); | 2436 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2266 }); | 2437 }); |
| 2267 } | 2438 } |
| 2268 | 2439 |
| 2269 test_ConstructorName_importedClass() { | 2440 test_ConstructorName_importedClass() { |
| 2270 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 2441 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 2271 // InstanceCreationExpression | 2442 // InstanceCreationExpression |
| 2272 addSource('/testB.dart', ''' | 2443 addSource( |
| 2444 '/testB.dart', | |
| 2445 ''' | |
| 2273 lib B; | 2446 lib B; |
| 2274 int T1; | 2447 int T1; |
| 2275 F1() { } | 2448 F1() { } |
| 2276 class X {X.c(); X._d(); z() {}}'''); | 2449 class X {X.c(); X._d(); z() {}}'''); |
| 2277 addTestSource(''' | 2450 addTestSource(''' |
| 2278 import "/testB.dart"; | 2451 import "/testB.dart"; |
| 2279 var m; | 2452 var m; |
| 2280 main() {new X.^}'''); | 2453 main() {new X.^}'''); |
| 2281 computeFast(); | 2454 computeFast(); |
| 2282 return computeFull((bool result) { | 2455 return computeFull((bool result) { |
| 2283 expect(request.replacementOffset, completionOffset); | 2456 expect(request.replacementOffset, completionOffset); |
| 2284 expect(request.replacementLength, 0); | 2457 expect(request.replacementLength, 0); |
| 2285 assertSuggestNamedConstructor('c', 'X'); | 2458 assertSuggestNamedConstructor('c', 'X'); |
| 2286 assertNotSuggested('F1'); | 2459 assertNotSuggested('F1'); |
| 2287 assertNotSuggested('T1'); | 2460 assertNotSuggested('T1'); |
| 2288 assertNotSuggested('_d'); | 2461 assertNotSuggested('_d'); |
| 2289 assertNotSuggested('z'); | 2462 assertNotSuggested('z'); |
| 2290 assertNotSuggested('m'); | 2463 assertNotSuggested('m'); |
| 2291 }); | 2464 }); |
| 2292 } | 2465 } |
| 2293 | 2466 |
| 2294 test_ConstructorName_importedFactory() { | 2467 test_ConstructorName_importedFactory() { |
| 2295 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 2468 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 2296 // InstanceCreationExpression | 2469 // InstanceCreationExpression |
| 2297 addSource('/testB.dart', ''' | 2470 addSource( |
| 2471 '/testB.dart', | |
| 2472 ''' | |
| 2298 lib B; | 2473 lib B; |
| 2299 int T1; | 2474 int T1; |
| 2300 F1() { } | 2475 F1() { } |
| 2301 class X {factory X.c(); factory X._d(); z() {}}'''); | 2476 class X {factory X.c(); factory X._d(); z() {}}'''); |
| 2302 addTestSource(''' | 2477 addTestSource(''' |
| 2303 import "/testB.dart"; | 2478 import "/testB.dart"; |
| 2304 var m; | 2479 var m; |
| 2305 main() {new X.^}'''); | 2480 main() {new X.^}'''); |
| 2306 computeFast(); | 2481 computeFast(); |
| 2307 return computeFull((bool result) { | 2482 return computeFull((bool result) { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2390 assertSuggestLocalMethod('a', 'A', null); | 2565 assertSuggestLocalMethod('a', 'A', null); |
| 2391 assertSuggestLocalClass('A'); | 2566 assertSuggestLocalClass('A'); |
| 2392 assertSuggestImportedClass('String'); | 2567 assertSuggestImportedClass('String'); |
| 2393 assertSuggestImportedFunction('identical', 'bool'); | 2568 assertSuggestImportedFunction('identical', 'bool'); |
| 2394 assertNotSuggested('bar'); | 2569 assertNotSuggested('bar'); |
| 2395 }); | 2570 }); |
| 2396 } | 2571 } |
| 2397 | 2572 |
| 2398 test_ExpressionStatement_identifier() { | 2573 test_ExpressionStatement_identifier() { |
| 2399 // SimpleIdentifier ExpressionStatement Block | 2574 // SimpleIdentifier ExpressionStatement Block |
| 2400 addSource('/testA.dart', ''' | 2575 addSource( |
| 2576 '/testA.dart', | |
| 2577 ''' | |
| 2401 _B F1() { } | 2578 _B F1() { } |
| 2402 class A {int x;} | 2579 class A {int x;} |
| 2403 class _B { }'''); | 2580 class _B { }'''); |
| 2404 addTestSource(''' | 2581 addTestSource(''' |
| 2405 import "/testA.dart"; | 2582 import "/testA.dart"; |
| 2406 typedef int F2(int blat); | 2583 typedef int F2(int blat); |
| 2407 class Clz = Object with Object; | 2584 class Clz = Object with Object; |
| 2408 class C {foo(){^} void bar() {}}'''); | 2585 class C {foo(){^} void bar() {}}'''); |
| 2409 computeFast(); | 2586 computeFast(); |
| 2410 return computeFull((bool result) { | 2587 return computeFull((bool result) { |
| 2411 expect(request.replacementOffset, completionOffset); | 2588 expect(request.replacementOffset, completionOffset); |
| 2412 expect(request.replacementLength, 0); | 2589 expect(request.replacementLength, 0); |
| 2413 assertSuggestImportedClass('A'); | 2590 assertSuggestImportedClass('A'); |
| 2414 assertSuggestImportedFunction('F1', '_B'); | 2591 assertSuggestImportedFunction('F1', '_B'); |
| 2415 assertSuggestLocalClass('C'); | 2592 assertSuggestLocalClass('C'); |
| 2416 assertSuggestLocalMethod('foo', 'C', null); | 2593 assertSuggestLocalMethod('foo', 'C', null); |
| 2417 assertSuggestLocalMethod('bar', 'C', 'void'); | 2594 assertSuggestLocalMethod('bar', 'C', 'void'); |
| 2418 assertSuggestLocalFunctionTypeAlias('F2', 'int'); | 2595 assertSuggestLocalFunctionTypeAlias('F2', 'int'); |
| 2419 assertSuggestLocalClassTypeAlias('Clz'); | 2596 assertSuggestLocalClassTypeAlias('Clz'); |
| 2420 assertSuggestLocalClass('C'); | 2597 assertSuggestLocalClass('C'); |
| 2421 assertNotSuggested('x'); | 2598 assertNotSuggested('x'); |
| 2422 assertNotSuggested('_B'); | 2599 assertNotSuggested('_B'); |
| 2423 }); | 2600 }); |
| 2424 } | 2601 } |
| 2425 | 2602 |
| 2426 test_ExpressionStatement_name() { | 2603 test_ExpressionStatement_name() { |
| 2427 // ExpressionStatement Block BlockFunctionBody MethodDeclaration | 2604 // ExpressionStatement Block BlockFunctionBody MethodDeclaration |
| 2428 addSource('/testA.dart', ''' | 2605 addSource( |
| 2606 '/testA.dart', | |
| 2607 ''' | |
| 2429 B T1; | 2608 B T1; |
| 2430 class B{}'''); | 2609 class B{}'''); |
| 2431 addTestSource(''' | 2610 addTestSource(''' |
| 2432 import "/testA.dart"; | 2611 import "/testA.dart"; |
| 2433 class C {a() {C ^}}'''); | 2612 class C {a() {C ^}}'''); |
| 2434 computeFast(); | 2613 computeFast(); |
| 2435 return computeFull((bool result) { | 2614 return computeFull((bool result) { |
| 2436 assertNoSuggestions(); | 2615 assertNoSuggestions(); |
| 2437 }); | 2616 }); |
| 2438 } | 2617 } |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2625 expect(request.replacementOffset, completionOffset - 1); | 2804 expect(request.replacementOffset, completionOffset - 1); |
| 2626 expect(request.replacementLength, 1); | 2805 expect(request.replacementLength, 1); |
| 2627 assertSuggestLocalVariable('index', 'int'); | 2806 assertSuggestLocalVariable('index', 'int'); |
| 2628 assertSuggestLocalFunction('main', null); | 2807 assertSuggestLocalFunction('main', null); |
| 2629 assertNotSuggested('bar'); | 2808 assertNotSuggested('bar'); |
| 2630 }); | 2809 }); |
| 2631 } | 2810 } |
| 2632 | 2811 |
| 2633 test_FunctionDeclaration_returnType_afterComment() { | 2812 test_FunctionDeclaration_returnType_afterComment() { |
| 2634 // ClassDeclaration CompilationUnit | 2813 // ClassDeclaration CompilationUnit |
| 2635 addSource('/testA.dart', ''' | 2814 addSource( |
| 2815 '/testA.dart', | |
| 2816 ''' | |
| 2636 int T1; | 2817 int T1; |
| 2637 F1() { } | 2818 F1() { } |
| 2638 typedef D1(); | 2819 typedef D1(); |
| 2639 class C1 {C1(this.x) { } int x;}'''); | 2820 class C1 {C1(this.x) { } int x;}'''); |
| 2640 addTestSource(''' | 2821 addTestSource(''' |
| 2641 import "/testA.dart"; | 2822 import "/testA.dart"; |
| 2642 int T2; | 2823 int T2; |
| 2643 F2() { } | 2824 F2() { } |
| 2644 typedef D2(); | 2825 typedef D2(); |
| 2645 class C2 { } | 2826 class C2 { } |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 2656 assertNotSuggested('T2'); | 2837 assertNotSuggested('T2'); |
| 2657 assertNotSuggested('F2'); | 2838 assertNotSuggested('F2'); |
| 2658 assertSuggestLocalFunctionTypeAlias('D2', null); | 2839 assertSuggestLocalFunctionTypeAlias('D2', null); |
| 2659 assertSuggestLocalClass('C2'); | 2840 assertSuggestLocalClass('C2'); |
| 2660 assertNotSuggested('name'); | 2841 assertNotSuggested('name'); |
| 2661 }); | 2842 }); |
| 2662 } | 2843 } |
| 2663 | 2844 |
| 2664 test_FunctionDeclaration_returnType_afterComment2() { | 2845 test_FunctionDeclaration_returnType_afterComment2() { |
| 2665 // FunctionDeclaration ClassDeclaration CompilationUnit | 2846 // FunctionDeclaration ClassDeclaration CompilationUnit |
| 2666 addSource('/testA.dart', ''' | 2847 addSource( |
| 2848 '/testA.dart', | |
| 2849 ''' | |
| 2667 int T1; | 2850 int T1; |
| 2668 F1() { } | 2851 F1() { } |
| 2669 typedef D1(); | 2852 typedef D1(); |
| 2670 class C1 {C1(this.x) { } int x;}'''); | 2853 class C1 {C1(this.x) { } int x;}'''); |
| 2671 addTestSource(''' | 2854 addTestSource(''' |
| 2672 import "/testA.dart"; | 2855 import "/testA.dart"; |
| 2673 int T2; | 2856 int T2; |
| 2674 F2() { } | 2857 F2() { } |
| 2675 typedef D2(); | 2858 typedef D2(); |
| 2676 class C2 { } | 2859 class C2 { } |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 2687 assertNotSuggested('T2'); | 2870 assertNotSuggested('T2'); |
| 2688 assertNotSuggested('F2'); | 2871 assertNotSuggested('F2'); |
| 2689 assertSuggestLocalFunctionTypeAlias('D2', null); | 2872 assertSuggestLocalFunctionTypeAlias('D2', null); |
| 2690 assertSuggestLocalClass('C2'); | 2873 assertSuggestLocalClass('C2'); |
| 2691 assertNotSuggested('name'); | 2874 assertNotSuggested('name'); |
| 2692 }); | 2875 }); |
| 2693 } | 2876 } |
| 2694 | 2877 |
| 2695 test_FunctionDeclaration_returnType_afterComment3() { | 2878 test_FunctionDeclaration_returnType_afterComment3() { |
| 2696 // FunctionDeclaration ClassDeclaration CompilationUnit | 2879 // FunctionDeclaration ClassDeclaration CompilationUnit |
| 2697 addSource('/testA.dart', ''' | 2880 addSource( |
| 2881 '/testA.dart', | |
| 2882 ''' | |
| 2698 int T1; | 2883 int T1; |
| 2699 F1() { } | 2884 F1() { } |
| 2700 typedef D1(); | 2885 typedef D1(); |
| 2701 class C1 {C1(this.x) { } int x;}'''); | 2886 class C1 {C1(this.x) { } int x;}'''); |
| 2702 addTestSource(''' | 2887 addTestSource(''' |
| 2703 import "/testA.dart"; | 2888 import "/testA.dart"; |
| 2704 int T2; | 2889 int T2; |
| 2705 F2() { } | 2890 F2() { } |
| 2706 typedef D2(); | 2891 typedef D2(); |
| 2707 /// some dartdoc | 2892 /// some dartdoc |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2813 import "dart^"; | 2998 import "dart^"; |
| 2814 main() {}'''); | 2999 main() {}'''); |
| 2815 computeFast(); | 3000 computeFast(); |
| 2816 return computeFull((bool result) { | 3001 return computeFull((bool result) { |
| 2817 assertNoSuggestions(); | 3002 assertNoSuggestions(); |
| 2818 }); | 3003 }); |
| 2819 } | 3004 } |
| 2820 | 3005 |
| 2821 test_IndexExpression() { | 3006 test_IndexExpression() { |
| 2822 // ExpressionStatement Block | 3007 // ExpressionStatement Block |
| 2823 addSource('/testA.dart', ''' | 3008 addSource( |
| 3009 '/testA.dart', | |
| 3010 ''' | |
| 2824 int T1; | 3011 int T1; |
| 2825 F1() { } | 3012 F1() { } |
| 2826 class A {int x;}'''); | 3013 class A {int x;}'''); |
| 2827 addTestSource(''' | 3014 addTestSource(''' |
| 2828 import "/testA.dart"; | 3015 import "/testA.dart"; |
| 2829 int T2; | 3016 int T2; |
| 2830 F2() { } | 3017 F2() { } |
| 2831 class B {int x;} | 3018 class B {int x;} |
| 2832 class C {foo(){var f; {var x;} f[^]}}'''); | 3019 class C {foo(){var f; {var x;} f[^]}}'''); |
| 2833 computeFast(); | 3020 computeFast(); |
| 2834 return computeFull((bool result) { | 3021 return computeFull((bool result) { |
| 2835 assertNotSuggested('x'); | 3022 assertNotSuggested('x'); |
| 2836 assertSuggestLocalVariable('f', null); | 3023 assertSuggestLocalVariable('f', null); |
| 2837 assertSuggestLocalMethod('foo', 'C', null); | 3024 assertSuggestLocalMethod('foo', 'C', null); |
| 2838 assertSuggestLocalClass('C'); | 3025 assertSuggestLocalClass('C'); |
| 2839 assertSuggestLocalFunction('F2', null); | 3026 assertSuggestLocalFunction('F2', null); |
| 2840 assertSuggestLocalTopLevelVar('T2', 'int'); | 3027 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2841 assertSuggestImportedClass('A'); | 3028 assertSuggestImportedClass('A'); |
| 2842 assertSuggestImportedFunction('F1', null); | 3029 assertSuggestImportedFunction('F1', null); |
| 2843 // TODO (danrubel) getter is being suggested instead of top level var | 3030 // TODO (danrubel) getter is being suggested instead of top level var |
| 2844 //assertSuggestImportedTopLevelVar('T1', 'int'); | 3031 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2845 }); | 3032 }); |
| 2846 } | 3033 } |
| 2847 | 3034 |
| 2848 test_IndexExpression2() { | 3035 test_IndexExpression2() { |
| 2849 // SimpleIdentifier IndexExpression ExpressionStatement Block | 3036 // SimpleIdentifier IndexExpression ExpressionStatement Block |
| 2850 addSource('/testA.dart', ''' | 3037 addSource( |
| 3038 '/testA.dart', | |
| 3039 ''' | |
| 2851 int T1; | 3040 int T1; |
| 2852 F1() { } | 3041 F1() { } |
| 2853 class A {int x;}'''); | 3042 class A {int x;}'''); |
| 2854 addTestSource(''' | 3043 addTestSource(''' |
| 2855 import "/testA.dart"; | 3044 import "/testA.dart"; |
| 2856 int T2; | 3045 int T2; |
| 2857 F2() { } | 3046 F2() { } |
| 2858 class B {int x;} | 3047 class B {int x;} |
| 2859 class C {foo(){var f; {var x;} f[T^]}}'''); | 3048 class C {foo(){var f; {var x;} f[T^]}}'''); |
| 2860 computeFast(); | 3049 computeFast(); |
| 2861 return computeFull((bool result) { | 3050 return computeFull((bool result) { |
| 2862 // top level results are partially filtered based on first char | 3051 // top level results are partially filtered based on first char |
| 2863 assertSuggestLocalTopLevelVar('T2', 'int'); | 3052 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2864 // TODO (danrubel) getter is being suggested instead of top level var | 3053 // TODO (danrubel) getter is being suggested instead of top level var |
| 2865 //assertSuggestImportedTopLevelVar('T1', 'int'); | 3054 //assertSuggestImportedTopLevelVar('T1', 'int'); |
| 2866 }); | 3055 }); |
| 2867 } | 3056 } |
| 2868 | 3057 |
| 2869 test_InstanceCreationExpression_imported() { | 3058 test_InstanceCreationExpression_imported() { |
| 2870 // SimpleIdentifier TypeName ConstructorName InstanceCreationExpression | 3059 // SimpleIdentifier TypeName ConstructorName InstanceCreationExpression |
| 2871 addSource('/testA.dart', ''' | 3060 addSource( |
| 3061 '/testA.dart', | |
| 3062 ''' | |
| 2872 int T1; | 3063 int T1; |
| 2873 F1() { } | 3064 F1() { } |
| 2874 class A {A(this.x) { } int x;}'''); | 3065 class A {A(this.x) { } int x;}'''); |
| 2875 addTestSource(''' | 3066 addTestSource(''' |
| 2876 import "/testA.dart"; | 3067 import "/testA.dart"; |
| 2877 import "dart:async"; | 3068 import "dart:async"; |
| 2878 int T2; | 3069 int T2; |
| 2879 F2() { } | 3070 F2() { } |
| 2880 class B {B(this.x, [String boo]) { } int x;} | 3071 class B {B(this.x, [String boo]) { } int x;} |
| 2881 class C {foo(){var f; {var x;} new ^}}'''); | 3072 class C {foo(){var f; {var x;} new ^}}'''); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 2908 expect(request.replacementLength, 1); | 3099 expect(request.replacementLength, 1); |
| 2909 assertSuggestImportedConstructor('Future', | 3100 assertSuggestImportedConstructor('Future', |
| 2910 relevance: DART_RELEVANCE_LOW, importUri: 'dart:async'); | 3101 relevance: DART_RELEVANCE_LOW, importUri: 'dart:async'); |
| 2911 assertSuggestImportedConstructor('Foo', | 3102 assertSuggestImportedConstructor('Foo', |
| 2912 relevance: DART_RELEVANCE_LOW, importUri: 'testAB.dart'); | 3103 relevance: DART_RELEVANCE_LOW, importUri: 'testAB.dart'); |
| 2913 }); | 3104 }); |
| 2914 } | 3105 } |
| 2915 | 3106 |
| 2916 test_InterpolationExpression() { | 3107 test_InterpolationExpression() { |
| 2917 // SimpleIdentifier InterpolationExpression StringInterpolation | 3108 // SimpleIdentifier InterpolationExpression StringInterpolation |
| 2918 addSource('/testA.dart', ''' | 3109 addSource( |
| 3110 '/testA.dart', | |
| 3111 ''' | |
| 2919 int T1; | 3112 int T1; |
| 2920 F1() { } | 3113 F1() { } |
| 2921 typedef D1(); | 3114 typedef D1(); |
| 2922 class C1 {C1(this.x) { } int x;}'''); | 3115 class C1 {C1(this.x) { } int x;}'''); |
| 2923 addTestSource(''' | 3116 addTestSource(''' |
| 2924 import "/testA.dart"; | 3117 import "/testA.dart"; |
| 2925 int T2; | 3118 int T2; |
| 2926 F2() { } | 3119 F2() { } |
| 2927 typedef D2(); | 3120 typedef D2(); |
| 2928 class C2 { } | 3121 class C2 { } |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 2943 assertSuggestLocalTopLevelVar('T2', 'int'); | 3136 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 2944 assertSuggestLocalFunction('F2', null); | 3137 assertSuggestLocalFunction('F2', null); |
| 2945 assertNotSuggested('D2'); | 3138 assertNotSuggested('D2'); |
| 2946 assertNotSuggested('C2'); | 3139 assertNotSuggested('C2'); |
| 2947 assertSuggestLocalVariable('name', 'String'); | 3140 assertSuggestLocalVariable('name', 'String'); |
| 2948 }); | 3141 }); |
| 2949 } | 3142 } |
| 2950 | 3143 |
| 2951 test_InterpolationExpression_block() { | 3144 test_InterpolationExpression_block() { |
| 2952 // SimpleIdentifier InterpolationExpression StringInterpolation | 3145 // SimpleIdentifier InterpolationExpression StringInterpolation |
| 2953 addSource('/testA.dart', ''' | 3146 addSource( |
| 3147 '/testA.dart', | |
| 3148 ''' | |
| 2954 int T1; | 3149 int T1; |
| 2955 F1() { } | 3150 F1() { } |
| 2956 typedef D1(); | 3151 typedef D1(); |
| 2957 class C1 {C1(this.x) { } int x;}'''); | 3152 class C1 {C1(this.x) { } int x;}'''); |
| 2958 addTestSource(''' | 3153 addTestSource(''' |
| 2959 import "/testA.dart"; | 3154 import "/testA.dart"; |
| 2960 int T2; | 3155 int T2; |
| 2961 F2() { } | 3156 F2() { } |
| 2962 typedef D2(); | 3157 typedef D2(); |
| 2963 class C2 { } | 3158 class C2 { } |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3024 return computeFull((bool result) { | 3219 return computeFull((bool result) { |
| 3025 assertSuggestLocalVariable('name', 'String'); | 3220 assertSuggestLocalVariable('name', 'String'); |
| 3026 // top level results are partially filtered | 3221 // top level results are partially filtered |
| 3027 //assertSuggestImportedClass('Object'); | 3222 //assertSuggestImportedClass('Object'); |
| 3028 assertNotSuggested('length'); | 3223 assertNotSuggested('length'); |
| 3029 }); | 3224 }); |
| 3030 } | 3225 } |
| 3031 | 3226 |
| 3032 test_IsExpression() { | 3227 test_IsExpression() { |
| 3033 // SimpleIdentifier TypeName IsExpression IfStatement | 3228 // SimpleIdentifier TypeName IsExpression IfStatement |
| 3034 addSource('/testB.dart', ''' | 3229 addSource( |
| 3230 '/testB.dart', | |
| 3231 ''' | |
| 3035 lib B; | 3232 lib B; |
| 3036 foo() { } | 3233 foo() { } |
| 3037 class X {X.c(); X._d(); z() {}}'''); | 3234 class X {X.c(); X._d(); z() {}}'''); |
| 3038 addTestSource(''' | 3235 addTestSource(''' |
| 3039 import "/testB.dart"; | 3236 import "/testB.dart"; |
| 3040 class Y {Y.c(); Y._d(); z() {}} | 3237 class Y {Y.c(); Y._d(); z() {}} |
| 3041 main() {var x; if (x is ^) { }}'''); | 3238 main() {var x; if (x is ^) { }}'''); |
| 3042 computeFast(); | 3239 computeFast(); |
| 3043 return computeFull((bool result) { | 3240 return computeFull((bool result) { |
| 3044 expect(request.replacementOffset, completionOffset); | 3241 expect(request.replacementOffset, completionOffset); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3097 expect(request.replacementOffset, completionOffset - 3); | 3294 expect(request.replacementOffset, completionOffset - 3); |
| 3098 expect(request.replacementLength, 3); | 3295 expect(request.replacementLength, 3); |
| 3099 assertNotSuggested('a'); | 3296 assertNotSuggested('a'); |
| 3100 assertNotSuggested('main'); | 3297 assertNotSuggested('main'); |
| 3101 assertSuggestLocalClass('A'); | 3298 assertSuggestLocalClass('A'); |
| 3102 assertSuggestImportedClass('Object'); | 3299 assertSuggestImportedClass('Object'); |
| 3103 }); | 3300 }); |
| 3104 } | 3301 } |
| 3105 | 3302 |
| 3106 test_keyword() { | 3303 test_keyword() { |
| 3107 addSource('/testB.dart', ''' | 3304 addSource( |
| 3305 '/testB.dart', | |
| 3306 ''' | |
| 3108 lib B; | 3307 lib B; |
| 3109 int newT1; | 3308 int newT1; |
| 3110 int T1; | 3309 int T1; |
| 3111 nowIsIt() { } | 3310 nowIsIt() { } |
| 3112 class X {factory X.c(); factory X._d(); z() {}}'''); | 3311 class X {factory X.c(); factory X._d(); z() {}}'''); |
| 3113 addTestSource(''' | 3312 addTestSource(''' |
| 3114 import "/testB.dart"; | 3313 import "/testB.dart"; |
| 3115 String newer() {} | 3314 String newer() {} |
| 3116 var m; | 3315 var m; |
| 3117 main() {new^ X.c();}'''); | 3316 main() {new^ X.c();}'''); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3158 // SimpleStringLiteral ExpressionStatement Block | 3357 // SimpleStringLiteral ExpressionStatement Block |
| 3159 addTestSource('class A {a() {"hel^lo"}}'); | 3358 addTestSource('class A {a() {"hel^lo"}}'); |
| 3160 computeFast(); | 3359 computeFast(); |
| 3161 return computeFull((bool result) { | 3360 return computeFull((bool result) { |
| 3162 assertNoSuggestions(); | 3361 assertNoSuggestions(); |
| 3163 }); | 3362 }); |
| 3164 } | 3363 } |
| 3165 | 3364 |
| 3166 test_MapLiteralEntry() { | 3365 test_MapLiteralEntry() { |
| 3167 // MapLiteralEntry MapLiteral VariableDeclaration | 3366 // MapLiteralEntry MapLiteral VariableDeclaration |
| 3168 addSource('/testA.dart', ''' | 3367 addSource( |
| 3368 '/testA.dart', | |
| 3369 ''' | |
| 3169 int T1; | 3370 int T1; |
| 3170 F1() { } | 3371 F1() { } |
| 3171 typedef D1(); | 3372 typedef D1(); |
| 3172 class C1 {C1(this.x) { } int x;}'''); | 3373 class C1 {C1(this.x) { } int x;}'''); |
| 3173 addTestSource(''' | 3374 addTestSource(''' |
| 3174 import "/testA.dart"; | 3375 import "/testA.dart"; |
| 3175 int T2; | 3376 int T2; |
| 3176 F2() { } | 3377 F2() { } |
| 3177 typedef D2(); | 3378 typedef D2(); |
| 3178 class C2 { } | 3379 class C2 { } |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 3192 assertSuggestImportedClass('C1'); | 3393 assertSuggestImportedClass('C1'); |
| 3193 assertSuggestLocalTopLevelVar('T2', 'int'); | 3394 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 3194 assertSuggestLocalFunction('F2', null); | 3395 assertSuggestLocalFunction('F2', null); |
| 3195 assertSuggestLocalFunctionTypeAlias('D2', null); | 3396 assertSuggestLocalFunctionTypeAlias('D2', null); |
| 3196 assertSuggestLocalClass('C2'); | 3397 assertSuggestLocalClass('C2'); |
| 3197 }); | 3398 }); |
| 3198 } | 3399 } |
| 3199 | 3400 |
| 3200 test_MapLiteralEntry1() { | 3401 test_MapLiteralEntry1() { |
| 3201 // MapLiteralEntry MapLiteral VariableDeclaration | 3402 // MapLiteralEntry MapLiteral VariableDeclaration |
| 3202 addSource('/testA.dart', ''' | 3403 addSource( |
| 3404 '/testA.dart', | |
| 3405 ''' | |
| 3203 int T1; | 3406 int T1; |
| 3204 F1() { } | 3407 F1() { } |
| 3205 typedef D1(); | 3408 typedef D1(); |
| 3206 class C1 {C1(this.x) { } int x;}'''); | 3409 class C1 {C1(this.x) { } int x;}'''); |
| 3207 addTestSource(''' | 3410 addTestSource(''' |
| 3208 import "/testA.dart"; | 3411 import "/testA.dart"; |
| 3209 int T2; | 3412 int T2; |
| 3210 F2() { } | 3413 F2() { } |
| 3211 typedef D2(); | 3414 typedef D2(); |
| 3212 class C2 { } | 3415 class C2 { } |
| 3213 foo = {T^'''); | 3416 foo = {T^'''); |
| 3214 computeFast(); | 3417 computeFast(); |
| 3215 return computeFull((bool result) { | 3418 return computeFull((bool result) { |
| 3216 expect(request.replacementOffset, completionOffset - 1); | 3419 expect(request.replacementOffset, completionOffset - 1); |
| 3217 expect(request.replacementLength, 1); | 3420 expect(request.replacementLength, 1); |
| 3218 // TODO(danrubel) Should be top level variable | 3421 // TODO(danrubel) Should be top level variable |
| 3219 if (contributor is ImportedReferenceContributor) { | 3422 if (contributor is ImportedReferenceContributor) { |
| 3220 assertSuggestGetter('T1', 'int'); | 3423 assertSuggestGetter('T1', 'int'); |
| 3221 // assertSuggestImportedTopLevelVar('T1', 'int'); | 3424 // assertSuggestImportedTopLevelVar('T1', 'int'); |
| 3222 } | 3425 } |
| 3223 assertSuggestLocalTopLevelVar('T2', 'int'); | 3426 assertSuggestLocalTopLevelVar('T2', 'int'); |
| 3224 }); | 3427 }); |
| 3225 } | 3428 } |
| 3226 | 3429 |
| 3227 test_MapLiteralEntry2() { | 3430 test_MapLiteralEntry2() { |
| 3228 // SimpleIdentifier MapLiteralEntry MapLiteral VariableDeclaration | 3431 // SimpleIdentifier MapLiteralEntry MapLiteral VariableDeclaration |
| 3229 addSource('/testA.dart', ''' | 3432 addSource( |
| 3433 '/testA.dart', | |
| 3434 ''' | |
| 3230 int T1; | 3435 int T1; |
| 3231 F1() { } | 3436 F1() { } |
| 3232 typedef D1(); | 3437 typedef D1(); |
| 3233 class C1 {C1(this.x) { } int x;}'''); | 3438 class C1 {C1(this.x) { } int x;}'''); |
| 3234 addTestSource(''' | 3439 addTestSource(''' |
| 3235 import "/testA.dart"; | 3440 import "/testA.dart"; |
| 3236 int T2; | 3441 int T2; |
| 3237 F2() { } | 3442 F2() { } |
| 3238 typedef D2(); | 3443 typedef D2(); |
| 3239 class C2 { } | 3444 class C2 { } |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3341 assertSuggestLocalFunction('bar', 'void'); | 3546 assertSuggestLocalFunction('bar', 'void'); |
| 3342 assertSuggestLocalMethod('a', 'A', 'Z'); | 3547 assertSuggestLocalMethod('a', 'A', 'Z'); |
| 3343 assertSuggestParameter('x', 'X'); | 3548 assertSuggestParameter('x', 'X'); |
| 3344 assertSuggestParameter('y', 'int'); | 3549 assertSuggestParameter('y', 'int'); |
| 3345 assertSuggestImportedClass('String'); | 3550 assertSuggestImportedClass('String'); |
| 3346 }); | 3551 }); |
| 3347 } | 3552 } |
| 3348 | 3553 |
| 3349 test_MethodDeclaration_returnType() { | 3554 test_MethodDeclaration_returnType() { |
| 3350 // ClassDeclaration CompilationUnit | 3555 // ClassDeclaration CompilationUnit |
| 3351 addSource('/testA.dart', ''' | 3556 addSource( |
| 3557 '/testA.dart', | |
| 3558 ''' | |
| 3352 int T1; | 3559 int T1; |
| 3353 F1() { } | 3560 F1() { } |
| 3354 typedef D1(); | 3561 typedef D1(); |
| 3355 class C1 {C1(this.x) { } int x;}'''); | 3562 class C1 {C1(this.x) { } int x;}'''); |
| 3356 addTestSource(''' | 3563 addTestSource(''' |
| 3357 import "/testA.dart"; | 3564 import "/testA.dart"; |
| 3358 int T2; | 3565 int T2; |
| 3359 F2() { } | 3566 F2() { } |
| 3360 typedef D2(); | 3567 typedef D2(); |
| 3361 class C2 {^ zoo(z) { } String name; }'''); | 3568 class C2 {^ zoo(z) { } String name; }'''); |
| 3362 computeFast(); | 3569 computeFast(); |
| 3363 return computeFull((bool result) { | 3570 return computeFull((bool result) { |
| 3364 expect(request.replacementOffset, completionOffset); | 3571 expect(request.replacementOffset, completionOffset); |
| 3365 expect(request.replacementLength, 0); | 3572 expect(request.replacementLength, 0); |
| 3366 assertSuggestImportedClass('Object'); | 3573 assertSuggestImportedClass('Object'); |
| 3367 assertNotSuggested('T1'); | 3574 assertNotSuggested('T1'); |
| 3368 assertNotSuggested('F1'); | 3575 assertNotSuggested('F1'); |
| 3369 assertSuggestImportedFunctionTypeAlias('D1', null); | 3576 assertSuggestImportedFunctionTypeAlias('D1', null); |
| 3370 assertSuggestImportedClass('C1'); | 3577 assertSuggestImportedClass('C1'); |
| 3371 assertNotSuggested('T2'); | 3578 assertNotSuggested('T2'); |
| 3372 assertNotSuggested('F2'); | 3579 assertNotSuggested('F2'); |
| 3373 assertSuggestLocalFunctionTypeAlias('D2', null); | 3580 assertSuggestLocalFunctionTypeAlias('D2', null); |
| 3374 assertSuggestLocalClass('C2'); | 3581 assertSuggestLocalClass('C2'); |
| 3375 assertNotSuggested('name'); | 3582 assertNotSuggested('name'); |
| 3376 }); | 3583 }); |
| 3377 } | 3584 } |
| 3378 | 3585 |
| 3379 test_MethodDeclaration_returnType_afterComment() { | 3586 test_MethodDeclaration_returnType_afterComment() { |
| 3380 // ClassDeclaration CompilationUnit | 3587 // ClassDeclaration CompilationUnit |
| 3381 addSource('/testA.dart', ''' | 3588 addSource( |
| 3589 '/testA.dart', | |
| 3590 ''' | |
| 3382 int T1; | 3591 int T1; |
| 3383 F1() { } | 3592 F1() { } |
| 3384 typedef D1(); | 3593 typedef D1(); |
| 3385 class C1 {C1(this.x) { } int x;}'''); | 3594 class C1 {C1(this.x) { } int x;}'''); |
| 3386 addTestSource(''' | 3595 addTestSource(''' |
| 3387 import "/testA.dart"; | 3596 import "/testA.dart"; |
| 3388 int T2; | 3597 int T2; |
| 3389 F2() { } | 3598 F2() { } |
| 3390 typedef D2(); | 3599 typedef D2(); |
| 3391 class C2 {/* */ ^ zoo(z) { } String name; }'''); | 3600 class C2 {/* */ ^ zoo(z) { } String name; }'''); |
| 3392 computeFast(); | 3601 computeFast(); |
| 3393 return computeFull((bool result) { | 3602 return computeFull((bool result) { |
| 3394 expect(request.replacementOffset, completionOffset); | 3603 expect(request.replacementOffset, completionOffset); |
| 3395 expect(request.replacementLength, 0); | 3604 expect(request.replacementLength, 0); |
| 3396 assertSuggestImportedClass('Object'); | 3605 assertSuggestImportedClass('Object'); |
| 3397 assertNotSuggested('T1'); | 3606 assertNotSuggested('T1'); |
| 3398 assertNotSuggested('F1'); | 3607 assertNotSuggested('F1'); |
| 3399 assertSuggestImportedFunctionTypeAlias('D1', null); | 3608 assertSuggestImportedFunctionTypeAlias('D1', null); |
| 3400 assertSuggestImportedClass('C1'); | 3609 assertSuggestImportedClass('C1'); |
| 3401 assertNotSuggested('T2'); | 3610 assertNotSuggested('T2'); |
| 3402 assertNotSuggested('F2'); | 3611 assertNotSuggested('F2'); |
| 3403 assertSuggestLocalFunctionTypeAlias('D2', null); | 3612 assertSuggestLocalFunctionTypeAlias('D2', null); |
| 3404 assertSuggestLocalClass('C2'); | 3613 assertSuggestLocalClass('C2'); |
| 3405 assertNotSuggested('name'); | 3614 assertNotSuggested('name'); |
| 3406 }); | 3615 }); |
| 3407 } | 3616 } |
| 3408 | 3617 |
| 3409 test_MethodDeclaration_returnType_afterComment2() { | 3618 test_MethodDeclaration_returnType_afterComment2() { |
| 3410 // MethodDeclaration ClassDeclaration CompilationUnit | 3619 // MethodDeclaration ClassDeclaration CompilationUnit |
| 3411 addSource('/testA.dart', ''' | 3620 addSource( |
| 3621 '/testA.dart', | |
| 3622 ''' | |
| 3412 int T1; | 3623 int T1; |
| 3413 F1() { } | 3624 F1() { } |
| 3414 typedef D1(); | 3625 typedef D1(); |
| 3415 class C1 {C1(this.x) { } int x;}'''); | 3626 class C1 {C1(this.x) { } int x;}'''); |
| 3416 addTestSource(''' | 3627 addTestSource(''' |
| 3417 import "/testA.dart"; | 3628 import "/testA.dart"; |
| 3418 int T2; | 3629 int T2; |
| 3419 F2() { } | 3630 F2() { } |
| 3420 typedef D2(); | 3631 typedef D2(); |
| 3421 class C2 {/** */ ^ zoo(z) { } String name; }'''); | 3632 class C2 {/** */ ^ zoo(z) { } String name; }'''); |
| 3422 computeFast(); | 3633 computeFast(); |
| 3423 return computeFull((bool result) { | 3634 return computeFull((bool result) { |
| 3424 expect(request.replacementOffset, completionOffset); | 3635 expect(request.replacementOffset, completionOffset); |
| 3425 expect(request.replacementLength, 0); | 3636 expect(request.replacementLength, 0); |
| 3426 assertSuggestImportedClass('Object'); | 3637 assertSuggestImportedClass('Object'); |
| 3427 assertNotSuggested('T1'); | 3638 assertNotSuggested('T1'); |
| 3428 assertNotSuggested('F1'); | 3639 assertNotSuggested('F1'); |
| 3429 assertSuggestImportedFunctionTypeAlias('D1', null); | 3640 assertSuggestImportedFunctionTypeAlias('D1', null); |
| 3430 assertSuggestImportedClass('C1'); | 3641 assertSuggestImportedClass('C1'); |
| 3431 assertNotSuggested('T2'); | 3642 assertNotSuggested('T2'); |
| 3432 assertNotSuggested('F2'); | 3643 assertNotSuggested('F2'); |
| 3433 assertSuggestLocalFunctionTypeAlias('D2', null); | 3644 assertSuggestLocalFunctionTypeAlias('D2', null); |
| 3434 assertSuggestLocalClass('C2'); | 3645 assertSuggestLocalClass('C2'); |
| 3435 assertNotSuggested('name'); | 3646 assertNotSuggested('name'); |
| 3436 }); | 3647 }); |
| 3437 } | 3648 } |
| 3438 | 3649 |
| 3439 test_MethodDeclaration_returnType_afterComment3() { | 3650 test_MethodDeclaration_returnType_afterComment3() { |
| 3440 // MethodDeclaration ClassDeclaration CompilationUnit | 3651 // MethodDeclaration ClassDeclaration CompilationUnit |
| 3441 addSource('/testA.dart', ''' | 3652 addSource( |
| 3653 '/testA.dart', | |
| 3654 ''' | |
| 3442 int T1; | 3655 int T1; |
| 3443 F1() { } | 3656 F1() { } |
| 3444 typedef D1(); | 3657 typedef D1(); |
| 3445 class C1 {C1(this.x) { } int x;}'''); | 3658 class C1 {C1(this.x) { } int x;}'''); |
| 3446 addTestSource(''' | 3659 addTestSource(''' |
| 3447 import "/testA.dart"; | 3660 import "/testA.dart"; |
| 3448 int T2; | 3661 int T2; |
| 3449 F2() { } | 3662 F2() { } |
| 3450 typedef D2(); | 3663 typedef D2(); |
| 3451 class C2 { | 3664 class C2 { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3510 assertSuggestInvocationMethod('nextDouble', 'Random', 'double'); | 3723 assertSuggestInvocationMethod('nextDouble', 'Random', 'double'); |
| 3511 assertSuggestInvocationMethod('nextInt', 'Random', 'int'); | 3724 assertSuggestInvocationMethod('nextInt', 'Random', 'int'); |
| 3512 assertNotSuggested('Random'); | 3725 assertNotSuggested('Random'); |
| 3513 assertNotSuggested('Object'); | 3726 assertNotSuggested('Object'); |
| 3514 assertNotSuggested('A'); | 3727 assertNotSuggested('A'); |
| 3515 }); | 3728 }); |
| 3516 } | 3729 } |
| 3517 | 3730 |
| 3518 test_partFile_TypeName() { | 3731 test_partFile_TypeName() { |
| 3519 // SimpleIdentifier TypeName ConstructorName | 3732 // SimpleIdentifier TypeName ConstructorName |
| 3520 addSource('/testB.dart', ''' | 3733 addSource( |
| 3734 '/testB.dart', | |
| 3735 ''' | |
| 3521 lib B; | 3736 lib B; |
| 3522 int T1; | 3737 int T1; |
| 3523 F1() { } | 3738 F1() { } |
| 3524 class X {X.c(); X._d(); z() {}}'''); | 3739 class X {X.c(); X._d(); z() {}}'''); |
| 3525 addSource('/testA.dart', ''' | 3740 addSource( |
| 3741 '/testA.dart', | |
| 3742 ''' | |
| 3526 library libA; | 3743 library libA; |
| 3527 import "/testB.dart"; | 3744 import "/testB.dart"; |
| 3528 part "$testFile"; | 3745 part "$testFile"; |
| 3529 class A { } | 3746 class A { } |
| 3530 var m;'''); | 3747 var m;'''); |
| 3531 addTestSource(''' | 3748 addTestSource(''' |
| 3532 part of libA; | 3749 part of libA; |
| 3533 class B { factory B.bar(int x) => null; } | 3750 class B { factory B.bar(int x) => null; } |
| 3534 main() {new ^}'''); | 3751 main() {new ^}'''); |
| 3535 computeFast(); | 3752 computeFast(); |
| 3536 return computeFull((bool result) { | 3753 return computeFull((bool result) { |
| 3537 expect(request.replacementOffset, completionOffset); | 3754 expect(request.replacementOffset, completionOffset); |
| 3538 expect(request.replacementLength, 0); | 3755 expect(request.replacementLength, 0); |
| 3539 assertSuggestLocalConstructor('B.bar'); | 3756 assertSuggestLocalConstructor('B.bar'); |
| 3540 assertSuggestImportedConstructor('Object'); | 3757 assertSuggestImportedConstructor('Object'); |
| 3541 assertSuggestImportedConstructor('X.c'); | 3758 assertSuggestImportedConstructor('X.c'); |
| 3542 assertNotSuggested('X._d'); | 3759 assertNotSuggested('X._d'); |
| 3543 assertSuggestImportedConstructor('A'); | 3760 assertSuggestImportedConstructor('A'); |
| 3544 assertNotSuggested('F1'); | 3761 assertNotSuggested('F1'); |
| 3545 assertNotSuggested('T1'); | 3762 assertNotSuggested('T1'); |
| 3546 assertNotSuggested('_d'); | 3763 assertNotSuggested('_d'); |
| 3547 assertNotSuggested('z'); | 3764 assertNotSuggested('z'); |
| 3548 assertNotSuggested('m'); | 3765 assertNotSuggested('m'); |
| 3549 }); | 3766 }); |
| 3550 } | 3767 } |
| 3551 | 3768 |
| 3552 test_partFile_TypeName2() { | 3769 test_partFile_TypeName2() { |
| 3553 // SimpleIdentifier TypeName ConstructorName | 3770 // SimpleIdentifier TypeName ConstructorName |
| 3554 addSource('/testB.dart', ''' | 3771 addSource( |
| 3772 '/testB.dart', | |
| 3773 ''' | |
| 3555 lib B; | 3774 lib B; |
| 3556 int T1; | 3775 int T1; |
| 3557 F1() { } | 3776 F1() { } |
| 3558 class X {X.c(); X._d(); z() {}}'''); | 3777 class X {X.c(); X._d(); z() {}}'''); |
| 3559 addSource('/testA.dart', ''' | 3778 addSource( |
| 3779 '/testA.dart', | |
| 3780 ''' | |
| 3560 part of libA; | 3781 part of libA; |
| 3561 class B { }'''); | 3782 class B { }'''); |
| 3562 addTestSource(''' | 3783 addTestSource(''' |
| 3563 library libA; | 3784 library libA; |
| 3564 import "/testB.dart"; | 3785 import "/testB.dart"; |
| 3565 part "/testA.dart"; | 3786 part "/testA.dart"; |
| 3566 class A { A({String boo: 'hoo'}) { } } | 3787 class A { A({String boo: 'hoo'}) { } } |
| 3567 main() {new ^} | 3788 main() {new ^} |
| 3568 var m;'''); | 3789 var m;'''); |
| 3569 computeFast(); | 3790 computeFast(); |
| 3570 return computeFull((bool result) { | 3791 return computeFull((bool result) { |
| 3571 expect(request.replacementOffset, completionOffset); | 3792 expect(request.replacementOffset, completionOffset); |
| 3572 expect(request.replacementLength, 0); | 3793 expect(request.replacementLength, 0); |
| 3573 assertSuggestLocalConstructor('A'); | 3794 assertSuggestLocalConstructor('A'); |
| 3574 assertSuggestImportedConstructor('Object'); | 3795 assertSuggestImportedConstructor('Object'); |
| 3575 assertSuggestImportedConstructor('X.c'); | 3796 assertSuggestImportedConstructor('X.c'); |
| 3576 assertNotSuggested('X._d'); | 3797 assertNotSuggested('X._d'); |
| 3577 assertSuggestImportedConstructor('B'); | 3798 assertSuggestImportedConstructor('B'); |
| 3578 assertNotSuggested('F1'); | 3799 assertNotSuggested('F1'); |
| 3579 assertNotSuggested('T1'); | 3800 assertNotSuggested('T1'); |
| 3580 assertNotSuggested('_d'); | 3801 assertNotSuggested('_d'); |
| 3581 assertNotSuggested('z'); | 3802 assertNotSuggested('z'); |
| 3582 assertNotSuggested('m'); | 3803 assertNotSuggested('m'); |
| 3583 }); | 3804 }); |
| 3584 } | 3805 } |
| 3585 | 3806 |
| 3586 test_PrefixedIdentifier_class_const() { | 3807 test_PrefixedIdentifier_class_const() { |
| 3587 // SimpleIdentifier PrefixedIdentifier ExpressionStatement Block | 3808 // SimpleIdentifier PrefixedIdentifier ExpressionStatement Block |
| 3588 addSource('/testB.dart', ''' | 3809 addSource( |
| 3810 '/testB.dart', | |
| 3811 ''' | |
| 3589 lib B; | 3812 lib B; |
| 3590 class I { | 3813 class I { |
| 3591 static const scI = 'boo'; | 3814 static const scI = 'boo'; |
| 3592 X get f => new A(); | 3815 X get f => new A(); |
| 3593 get _g => new A();} | 3816 get _g => new A();} |
| 3594 class B implements I { | 3817 class B implements I { |
| 3595 static const int scB = 12; | 3818 static const int scB = 12; |
| 3596 var b; X _c; | 3819 var b; X _c; |
| 3597 X get d => new A();get _e => new A(); | 3820 X get d => new A();get _e => new A(); |
| 3598 set s1(I x) {} set _s2(I x) {} | 3821 set s1(I x) {} set _s2(I x) {} |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 3625 assertNotSuggested('A'); | 3848 assertNotSuggested('A'); |
| 3626 assertNotSuggested('X'); | 3849 assertNotSuggested('X'); |
| 3627 assertNotSuggested('w'); | 3850 assertNotSuggested('w'); |
| 3628 assertNotSuggested('Object'); | 3851 assertNotSuggested('Object'); |
| 3629 assertNotSuggested('=='); | 3852 assertNotSuggested('=='); |
| 3630 }); | 3853 }); |
| 3631 } | 3854 } |
| 3632 | 3855 |
| 3633 test_PrefixedIdentifier_class_imported() { | 3856 test_PrefixedIdentifier_class_imported() { |
| 3634 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 3857 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
| 3635 addSource('/testB.dart', ''' | 3858 addSource( |
| 3859 '/testB.dart', | |
| 3860 ''' | |
| 3636 lib B; | 3861 lib B; |
| 3637 class I {X get f => new A();get _g => new A();} | 3862 class I {X get f => new A();get _g => new A();} |
| 3638 class A implements I { | 3863 class A implements I { |
| 3639 static const int sc = 12; | 3864 static const int sc = 12; |
| 3640 @deprecated var b; X _c; | 3865 @deprecated var b; X _c; |
| 3641 X get d => new A();get _e => new A(); | 3866 X get d => new A();get _e => new A(); |
| 3642 set s1(I x) {} set _s2(I x) {} | 3867 set s1(I x) {} set _s2(I x) {} |
| 3643 m(X x) {} I _n(X x) {}} | 3868 m(X x) {} I _n(X x) {}} |
| 3644 class X{}'''); | 3869 class X{}'''); |
| 3645 addTestSource(''' | 3870 addTestSource(''' |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3707 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 3932 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
| 3708 addTestSource('String get g => "one"; f() {g.^}'); | 3933 addTestSource('String get g => "one"; f() {g.^}'); |
| 3709 computeFast(); | 3934 computeFast(); |
| 3710 return computeFull((bool result) { | 3935 return computeFull((bool result) { |
| 3711 assertSuggestInvocationGetter('length', 'int'); | 3936 assertSuggestInvocationGetter('length', 'int'); |
| 3712 }); | 3937 }); |
| 3713 } | 3938 } |
| 3714 | 3939 |
| 3715 test_PrefixedIdentifier_library() { | 3940 test_PrefixedIdentifier_library() { |
| 3716 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 3941 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
| 3717 addSource('/testB.dart', ''' | 3942 addSource( |
| 3943 '/testB.dart', | |
| 3944 ''' | |
| 3718 lib B; | 3945 lib B; |
| 3719 var T1; | 3946 var T1; |
| 3720 class X { } | 3947 class X { } |
| 3721 class Y { }'''); | 3948 class Y { }'''); |
| 3722 addTestSource(''' | 3949 addTestSource(''' |
| 3723 import "/testB.dart" as b; | 3950 import "/testB.dart" as b; |
| 3724 var T2; | 3951 var T2; |
| 3725 class A { } | 3952 class A { } |
| 3726 main() {b.^}'''); | 3953 main() {b.^}'''); |
| 3727 computeFast(); | 3954 computeFast(); |
| 3728 return computeFull((bool result) { | 3955 return computeFull((bool result) { |
| 3729 expect(request.replacementOffset, completionOffset); | 3956 expect(request.replacementOffset, completionOffset); |
| 3730 expect(request.replacementLength, 0); | 3957 expect(request.replacementLength, 0); |
| 3731 assertSuggestInvocationClass('X'); | 3958 assertSuggestInvocationClass('X'); |
| 3732 assertSuggestInvocationClass('Y'); | 3959 assertSuggestInvocationClass('Y'); |
| 3733 assertSuggestInvocationTopLevelVar('T1', null); | 3960 assertSuggestInvocationTopLevelVar('T1', null); |
| 3734 assertNotSuggested('T2'); | 3961 assertNotSuggested('T2'); |
| 3735 assertNotSuggested('Object'); | 3962 assertNotSuggested('Object'); |
| 3736 assertNotSuggested('b'); | 3963 assertNotSuggested('b'); |
| 3737 assertNotSuggested('A'); | 3964 assertNotSuggested('A'); |
| 3738 assertNotSuggested('=='); | 3965 assertNotSuggested('=='); |
| 3739 }); | 3966 }); |
| 3740 } | 3967 } |
| 3741 | 3968 |
| 3742 test_PrefixedIdentifier_library_typesOnly() { | 3969 test_PrefixedIdentifier_library_typesOnly() { |
| 3743 // SimpleIdentifier PrefixedIdentifier TypeName | 3970 // SimpleIdentifier PrefixedIdentifier TypeName |
| 3744 addSource('/testB.dart', ''' | 3971 addSource( |
| 3972 '/testB.dart', | |
| 3973 ''' | |
| 3745 lib B; | 3974 lib B; |
| 3746 var T1; | 3975 var T1; |
| 3747 class X { } | 3976 class X { } |
| 3748 class Y { }'''); | 3977 class Y { }'''); |
| 3749 addTestSource(''' | 3978 addTestSource(''' |
| 3750 import "/testB.dart" as b; | 3979 import "/testB.dart" as b; |
| 3751 var T2; | 3980 var T2; |
| 3752 class A { } | 3981 class A { } |
| 3753 foo(b.^ f) {}'''); | 3982 foo(b.^ f) {}'''); |
| 3754 computeFast(); | 3983 computeFast(); |
| 3755 return computeFull((bool result) { | 3984 return computeFull((bool result) { |
| 3756 expect(request.replacementOffset, completionOffset); | 3985 expect(request.replacementOffset, completionOffset); |
| 3757 expect(request.replacementLength, 0); | 3986 expect(request.replacementLength, 0); |
| 3758 assertSuggestInvocationClass('X'); | 3987 assertSuggestInvocationClass('X'); |
| 3759 assertSuggestInvocationClass('Y'); | 3988 assertSuggestInvocationClass('Y'); |
| 3760 assertNotSuggested('T1'); | 3989 assertNotSuggested('T1'); |
| 3761 assertNotSuggested('T2'); | 3990 assertNotSuggested('T2'); |
| 3762 assertNotSuggested('Object'); | 3991 assertNotSuggested('Object'); |
| 3763 assertNotSuggested('b'); | 3992 assertNotSuggested('b'); |
| 3764 assertNotSuggested('A'); | 3993 assertNotSuggested('A'); |
| 3765 assertNotSuggested('=='); | 3994 assertNotSuggested('=='); |
| 3766 }); | 3995 }); |
| 3767 } | 3996 } |
| 3768 | 3997 |
| 3769 test_PrefixedIdentifier_library_typesOnly2() { | 3998 test_PrefixedIdentifier_library_typesOnly2() { |
| 3770 // SimpleIdentifier PrefixedIdentifier TypeName | 3999 // SimpleIdentifier PrefixedIdentifier TypeName |
| 3771 addSource('/testB.dart', ''' | 4000 addSource( |
| 4001 '/testB.dart', | |
| 4002 ''' | |
| 3772 lib B; | 4003 lib B; |
| 3773 var T1; | 4004 var T1; |
| 3774 class X { } | 4005 class X { } |
| 3775 class Y { }'''); | 4006 class Y { }'''); |
| 3776 addTestSource(''' | 4007 addTestSource(''' |
| 3777 import "/testB.dart" as b; | 4008 import "/testB.dart" as b; |
| 3778 var T2; | 4009 var T2; |
| 3779 class A { } | 4010 class A { } |
| 3780 foo(b.^) {}'''); | 4011 foo(b.^) {}'''); |
| 3781 computeFast(); | 4012 computeFast(); |
| 3782 return computeFull((bool result) { | 4013 return computeFull((bool result) { |
| 3783 expect(request.replacementOffset, completionOffset); | 4014 expect(request.replacementOffset, completionOffset); |
| 3784 expect(request.replacementLength, 0); | 4015 expect(request.replacementLength, 0); |
| 3785 assertSuggestInvocationClass('X'); | 4016 assertSuggestInvocationClass('X'); |
| 3786 assertSuggestInvocationClass('Y'); | 4017 assertSuggestInvocationClass('Y'); |
| 3787 assertNotSuggested('T1'); | 4018 assertNotSuggested('T1'); |
| 3788 assertNotSuggested('T2'); | 4019 assertNotSuggested('T2'); |
| 3789 assertNotSuggested('Object'); | 4020 assertNotSuggested('Object'); |
| 3790 assertNotSuggested('b'); | 4021 assertNotSuggested('b'); |
| 3791 assertNotSuggested('A'); | 4022 assertNotSuggested('A'); |
| 3792 assertNotSuggested('=='); | 4023 assertNotSuggested('=='); |
| 3793 }); | 4024 }); |
| 3794 } | 4025 } |
| 3795 | 4026 |
| 3796 test_PrefixedIdentifier_parameter() { | 4027 test_PrefixedIdentifier_parameter() { |
| 3797 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 4028 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
| 3798 addSource('/testB.dart', ''' | 4029 addSource( |
| 4030 '/testB.dart', | |
| 4031 ''' | |
| 3799 lib B; | 4032 lib B; |
| 3800 class _W {M y; var _z;} | 4033 class _W {M y; var _z;} |
| 3801 class X extends _W {} | 4034 class X extends _W {} |
| 3802 class M{}'''); | 4035 class M{}'''); |
| 3803 addTestSource(''' | 4036 addTestSource(''' |
| 3804 import "/testB.dart"; | 4037 import "/testB.dart"; |
| 3805 foo(X x) {x.^}'''); | 4038 foo(X x) {x.^}'''); |
| 3806 computeFast(); | 4039 computeFast(); |
| 3807 return computeFull((bool result) { | 4040 return computeFull((bool result) { |
| 3808 expect(request.replacementOffset, completionOffset); | 4041 expect(request.replacementOffset, completionOffset); |
| 3809 expect(request.replacementLength, 0); | 4042 expect(request.replacementLength, 0); |
| 3810 assertSuggestInvocationField('y', 'M'); | 4043 assertSuggestInvocationField('y', 'M'); |
| 3811 assertNotSuggested('_z'); | 4044 assertNotSuggested('_z'); |
| 3812 assertNotSuggested('=='); | 4045 assertNotSuggested('=='); |
| 3813 }); | 4046 }); |
| 3814 } | 4047 } |
| 3815 | 4048 |
| 3816 test_PrefixedIdentifier_prefix() { | 4049 test_PrefixedIdentifier_prefix() { |
| 3817 // SimpleIdentifier PrefixedIdentifier ExpressionStatement | 4050 // SimpleIdentifier PrefixedIdentifier ExpressionStatement |
| 3818 addSource('/testA.dart', ''' | 4051 addSource( |
| 4052 '/testA.dart', | |
| 4053 ''' | |
| 3819 class A {static int bar = 10;} | 4054 class A {static int bar = 10;} |
| 3820 _B() {}'''); | 4055 _B() {}'''); |
| 3821 addTestSource(''' | 4056 addTestSource(''' |
| 3822 import "/testA.dart"; | 4057 import "/testA.dart"; |
| 3823 class X {foo(){A^.bar}}'''); | 4058 class X {foo(){A^.bar}}'''); |
| 3824 computeFast(); | 4059 computeFast(); |
| 3825 return computeFull((bool result) { | 4060 return computeFull((bool result) { |
| 3826 expect(request.replacementOffset, completionOffset - 1); | 4061 expect(request.replacementOffset, completionOffset - 1); |
| 3827 expect(request.replacementLength, 1); | 4062 expect(request.replacementLength, 1); |
| 3828 assertSuggestImportedClass('A'); | 4063 assertSuggestImportedClass('A'); |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4279 // TopLevelVariableDeclaration | 4514 // TopLevelVariableDeclaration |
| 4280 addTestSource('class A {} var ^'); | 4515 addTestSource('class A {} var ^'); |
| 4281 computeFast(); | 4516 computeFast(); |
| 4282 return computeFull((bool result) { | 4517 return computeFull((bool result) { |
| 4283 assertNoSuggestions(); | 4518 assertNoSuggestions(); |
| 4284 }); | 4519 }); |
| 4285 } | 4520 } |
| 4286 | 4521 |
| 4287 test_TypeArgumentList() { | 4522 test_TypeArgumentList() { |
| 4288 // SimpleIdentifier BinaryExpression ExpressionStatement | 4523 // SimpleIdentifier BinaryExpression ExpressionStatement |
| 4289 addSource('/testA.dart', ''' | 4524 addSource( |
| 4525 '/testA.dart', | |
| 4526 ''' | |
| 4290 class C1 {int x;} | 4527 class C1 {int x;} |
| 4291 F1() => 0; | 4528 F1() => 0; |
| 4292 typedef String T1(int blat);'''); | 4529 typedef String T1(int blat);'''); |
| 4293 addTestSource(''' | 4530 addTestSource(''' |
| 4294 import "/testA.dart";' | 4531 import "/testA.dart";' |
| 4295 class C2 {int x;} | 4532 class C2 {int x;} |
| 4296 F2() => 0; | 4533 F2() => 0; |
| 4297 typedef int T2(int blat); | 4534 typedef int T2(int blat); |
| 4298 class C<E> {} | 4535 class C<E> {} |
| 4299 main() { C<^> c; }'''); | 4536 main() { C<^> c; }'''); |
| 4300 computeFast(); | 4537 computeFast(); |
| 4301 return computeFull((bool result) { | 4538 return computeFull((bool result) { |
| 4302 expect(request.replacementOffset, completionOffset); | 4539 expect(request.replacementOffset, completionOffset); |
| 4303 expect(request.replacementLength, 0); | 4540 expect(request.replacementLength, 0); |
| 4304 assertSuggestImportedClass('Object'); | 4541 assertSuggestImportedClass('Object'); |
| 4305 assertSuggestImportedClass('C1'); | 4542 assertSuggestImportedClass('C1'); |
| 4306 assertSuggestImportedFunctionTypeAlias('T1', 'String'); | 4543 assertSuggestImportedFunctionTypeAlias('T1', 'String'); |
| 4307 assertSuggestLocalClass('C2'); | 4544 assertSuggestLocalClass('C2'); |
| 4308 assertSuggestLocalFunctionTypeAlias('T2', 'int'); | 4545 assertSuggestLocalFunctionTypeAlias('T2', 'int'); |
| 4309 assertNotSuggested('F1'); | 4546 assertNotSuggested('F1'); |
| 4310 assertNotSuggested('F2'); | 4547 assertNotSuggested('F2'); |
| 4311 }); | 4548 }); |
| 4312 } | 4549 } |
| 4313 | 4550 |
| 4314 test_TypeArgumentList2() { | 4551 test_TypeArgumentList2() { |
| 4315 // TypeName TypeArgumentList TypeName | 4552 // TypeName TypeArgumentList TypeName |
| 4316 addSource('/testA.dart', ''' | 4553 addSource( |
| 4554 '/testA.dart', | |
| 4555 ''' | |
| 4317 class C1 {int x;} | 4556 class C1 {int x;} |
| 4318 F1() => 0; | 4557 F1() => 0; |
| 4319 typedef String T1(int blat);'''); | 4558 typedef String T1(int blat);'''); |
| 4320 addTestSource(''' | 4559 addTestSource(''' |
| 4321 import "/testA.dart";' | 4560 import "/testA.dart";' |
| 4322 class C2 {int x;} | 4561 class C2 {int x;} |
| 4323 F2() => 0; | 4562 F2() => 0; |
| 4324 typedef int T2(int blat); | 4563 typedef int T2(int blat); |
| 4325 class C<E> {} | 4564 class C<E> {} |
| 4326 main() { C<C^> c; }'''); | 4565 main() { C<C^> c; }'''); |
| 4327 computeFast(); | 4566 computeFast(); |
| 4328 return computeFull((bool result) { | 4567 return computeFull((bool result) { |
| 4329 expect(request.replacementOffset, completionOffset - 1); | 4568 expect(request.replacementOffset, completionOffset - 1); |
| 4330 expect(request.replacementLength, 1); | 4569 expect(request.replacementLength, 1); |
| 4331 assertSuggestImportedClass('C1'); | 4570 assertSuggestImportedClass('C1'); |
| 4332 assertSuggestLocalClass('C2'); | 4571 assertSuggestLocalClass('C2'); |
| 4333 }); | 4572 }); |
| 4334 } | 4573 } |
| 4335 | 4574 |
| 4336 test_VariableDeclaration_name() { | 4575 test_VariableDeclaration_name() { |
| 4337 // SimpleIdentifier VariableDeclaration VariableDeclarationList | 4576 // SimpleIdentifier VariableDeclaration VariableDeclarationList |
| 4338 // VariableDeclarationStatement Block | 4577 // VariableDeclarationStatement Block |
| 4339 addSource('/testB.dart', ''' | 4578 addSource( |
| 4579 '/testB.dart', | |
| 4580 ''' | |
| 4340 lib B; | 4581 lib B; |
| 4341 foo() { } | 4582 foo() { } |
| 4342 class _B { } | 4583 class _B { } |
| 4343 class X {X.c(); X._d(); z() {}}'''); | 4584 class X {X.c(); X._d(); z() {}}'''); |
| 4344 addTestSource(''' | 4585 addTestSource(''' |
| 4345 import "/testB.dart"; | 4586 import "/testB.dart"; |
| 4346 class Y {Y.c(); Y._d(); z() {}} | 4587 class Y {Y.c(); Y._d(); z() {}} |
| 4347 main() {var ^}'''); | 4588 main() {var ^}'''); |
| 4348 computeFast(); | 4589 computeFast(); |
| 4349 return computeFull((bool result) { | 4590 return computeFull((bool result) { |
| 4350 assertNoSuggestions(); | 4591 assertNoSuggestions(); |
| 4351 }); | 4592 }); |
| 4352 } | 4593 } |
| 4353 | 4594 |
| 4354 test_VariableDeclarationList_final() { | 4595 test_VariableDeclarationList_final() { |
| 4355 // VariableDeclarationList VariableDeclarationStatement Block | 4596 // VariableDeclarationList VariableDeclarationStatement Block |
| 4356 addTestSource('main() {final ^} class C { }'); | 4597 addTestSource('main() {final ^} class C { }'); |
| 4357 computeFast(); | 4598 computeFast(); |
| 4358 return computeFull((bool result) { | 4599 return computeFull((bool result) { |
| 4359 assertSuggestImportedClass('Object'); | 4600 assertSuggestImportedClass('Object'); |
| 4360 assertSuggestLocalClass('C'); | 4601 assertSuggestLocalClass('C'); |
| 4361 assertNotSuggested('=='); | 4602 assertNotSuggested('=='); |
| 4362 }); | 4603 }); |
| 4363 } | 4604 } |
| 4364 | 4605 |
| 4365 test_VariableDeclarationStatement_RHS() { | 4606 test_VariableDeclarationStatement_RHS() { |
| 4366 // SimpleIdentifier VariableDeclaration VariableDeclarationList | 4607 // SimpleIdentifier VariableDeclaration VariableDeclarationList |
| 4367 // VariableDeclarationStatement | 4608 // VariableDeclarationStatement |
| 4368 addSource('/testB.dart', ''' | 4609 addSource( |
| 4610 '/testB.dart', | |
| 4611 ''' | |
| 4369 lib B; | 4612 lib B; |
| 4370 foo() { } | 4613 foo() { } |
| 4371 class _B { } | 4614 class _B { } |
| 4372 class X {X.c(); X._d(); z() {}}'''); | 4615 class X {X.c(); X._d(); z() {}}'''); |
| 4373 addTestSource(''' | 4616 addTestSource(''' |
| 4374 import "/testB.dart"; | 4617 import "/testB.dart"; |
| 4375 class Y {Y.c(); Y._d(); z() {}} | 4618 class Y {Y.c(); Y._d(); z() {}} |
| 4376 class C {bar(){var f; {var x;} var e = ^}}'''); | 4619 class C {bar(){var f; {var x;} var e = ^}}'''); |
| 4377 computeFast(); | 4620 computeFast(); |
| 4378 return computeFull((bool result) { | 4621 return computeFull((bool result) { |
| 4379 expect(request.replacementOffset, completionOffset); | 4622 expect(request.replacementOffset, completionOffset); |
| 4380 expect(request.replacementLength, 0); | 4623 expect(request.replacementLength, 0); |
| 4381 assertSuggestImportedClass('X'); | 4624 assertSuggestImportedClass('X'); |
| 4382 assertNotSuggested('_B'); | 4625 assertNotSuggested('_B'); |
| 4383 assertSuggestLocalClass('Y'); | 4626 assertSuggestLocalClass('Y'); |
| 4384 assertSuggestLocalClass('C'); | 4627 assertSuggestLocalClass('C'); |
| 4385 assertSuggestLocalVariable('f', null); | 4628 assertSuggestLocalVariable('f', null); |
| 4386 assertNotSuggested('x'); | 4629 assertNotSuggested('x'); |
| 4387 assertNotSuggested('e'); | 4630 assertNotSuggested('e'); |
| 4388 }); | 4631 }); |
| 4389 } | 4632 } |
| 4390 | 4633 |
| 4391 test_VariableDeclarationStatement_RHS_missing_semicolon() { | 4634 test_VariableDeclarationStatement_RHS_missing_semicolon() { |
| 4392 // VariableDeclaration VariableDeclarationList | 4635 // VariableDeclaration VariableDeclarationList |
| 4393 // VariableDeclarationStatement | 4636 // VariableDeclarationStatement |
| 4394 addSource('/testB.dart', ''' | 4637 addSource( |
| 4638 '/testB.dart', | |
| 4639 ''' | |
| 4395 lib B; | 4640 lib B; |
| 4396 foo1() { } | 4641 foo1() { } |
| 4397 void bar1() { } | 4642 void bar1() { } |
| 4398 class _B { } | 4643 class _B { } |
| 4399 class X {X.c(); X._d(); z() {}}'''); | 4644 class X {X.c(); X._d(); z() {}}'''); |
| 4400 addTestSource(''' | 4645 addTestSource(''' |
| 4401 import "/testB.dart"; | 4646 import "/testB.dart"; |
| 4402 foo2() { } | 4647 foo2() { } |
| 4403 void bar2() { } | 4648 void bar2() { } |
| 4404 class Y {Y.c(); Y._d(); z() {}} | 4649 class Y {Y.c(); Y._d(); z() {}} |
| 4405 class C {bar(){var f; {var x;} var e = ^ var g}}'''); | 4650 class C {bar(){var f; {var x;} var e = ^ var g}}'''); |
| 4406 computeFast(); | 4651 computeFast(); |
| 4407 return computeFull((bool result) { | 4652 return computeFull((bool result) { |
| 4408 expect(request.replacementOffset, completionOffset); | 4653 expect(request.replacementOffset, completionOffset); |
| 4409 expect(request.replacementLength, 0); | 4654 expect(request.replacementLength, 0); |
| 4410 assertSuggestImportedClass('X'); | 4655 assertSuggestImportedClass('X'); |
| 4411 assertSuggestImportedFunction('foo1', null); | 4656 assertSuggestImportedFunction('foo1', null); |
| 4412 assertNotSuggested('bar1'); | 4657 assertNotSuggested('bar1'); |
| 4413 assertSuggestLocalFunction('foo2', null); | 4658 assertSuggestLocalFunction('foo2', null); |
| 4414 assertNotSuggested('bar2'); | 4659 assertNotSuggested('bar2'); |
| 4415 assertNotSuggested('_B'); | 4660 assertNotSuggested('_B'); |
| 4416 assertSuggestLocalClass('Y'); | 4661 assertSuggestLocalClass('Y'); |
| 4417 assertSuggestLocalClass('C'); | 4662 assertSuggestLocalClass('C'); |
| 4418 assertSuggestLocalVariable('f', null); | 4663 assertSuggestLocalVariable('f', null); |
| 4419 assertNotSuggested('x'); | 4664 assertNotSuggested('x'); |
| 4420 assertNotSuggested('e'); | 4665 assertNotSuggested('e'); |
| 4421 }); | 4666 }); |
| 4422 } | 4667 } |
| 4423 } | 4668 } |
| OLD | NEW |