OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'package:analyzer/dart/ast/ast.dart' as analyzer; | 5 import 'package:analyzer/dart/ast/ast.dart' as analyzer; |
6 import 'package:analyzer/dart/element/element.dart' as analyzer; | 6 import 'package:analyzer/dart/element/element.dart' as analyzer; |
7 import 'package:analyzer/dart/element/type.dart' as analyzer; | 7 import 'package:analyzer/dart/element/type.dart' as analyzer; |
8 import 'package:analyzer/error/error.dart' as analyzer; | 8 import 'package:analyzer/error/error.dart' as analyzer; |
9 import 'package:analyzer/exception/exception.dart' as analyzer; | 9 import 'package:analyzer/exception/exception.dart' as analyzer; |
10 import 'package:analyzer/source/error_processor.dart' as analyzer; | 10 import 'package:analyzer/source/error_processor.dart' as analyzer; |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 ]; | 174 ]; |
175 | 175 |
176 List<plugin.AnalysisError> pluginErrors = | 176 List<plugin.AnalysisError> pluginErrors = |
177 converter.convertAnalysisErrors(analyzerErrors, options: options); | 177 converter.convertAnalysisErrors(analyzerErrors, options: options); |
178 expect(pluginErrors, hasLength(analyzerErrors.length)); | 178 expect(pluginErrors, hasLength(analyzerErrors.length)); |
179 assertError(pluginErrors[0], analyzerErrors[0], severity: severity); | 179 assertError(pluginErrors[0], analyzerErrors[0], severity: severity); |
180 assertError(pluginErrors[1], analyzerErrors[1], severity: severity); | 180 assertError(pluginErrors[1], analyzerErrors[1], severity: severity); |
181 } | 181 } |
182 | 182 |
183 test_convertElement_class() async { | 183 test_convertElement_class() async { |
184 analyzer.Source source = addSource( | 184 analyzer.Source source = addSource(testFile, ''' |
185 testFile, | |
186 ''' | |
187 @deprecated | 185 @deprecated |
188 abstract class _A {} | 186 abstract class _A {} |
189 class B<K, V> {}'''); | 187 class B<K, V> {}'''); |
190 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 188 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
191 { | 189 { |
192 analyzer.ClassElement engineElement = findElementInUnit(unit, '_A'); | 190 analyzer.ClassElement engineElement = findElementInUnit(unit, '_A'); |
193 // create notification Element | 191 // create notification Element |
194 plugin.Element element = converter.convertElement(engineElement); | 192 plugin.Element element = converter.convertElement(engineElement); |
195 expect(element.kind, plugin.ElementKind.CLASS); | 193 expect(element.kind, plugin.ElementKind.CLASS); |
196 expect(element.name, '_A'); | 194 expect(element.name, '_A'); |
(...skipping 18 matching lines...) Expand all Loading... |
215 // create notification Element | 213 // create notification Element |
216 plugin.Element element = converter.convertElement(engineElement); | 214 plugin.Element element = converter.convertElement(engineElement); |
217 expect(element.kind, plugin.ElementKind.CLASS); | 215 expect(element.kind, plugin.ElementKind.CLASS); |
218 expect(element.name, 'B'); | 216 expect(element.name, 'B'); |
219 expect(element.typeParameters, '<K, V>'); | 217 expect(element.typeParameters, '<K, V>'); |
220 expect(element.flags, 0); | 218 expect(element.flags, 0); |
221 } | 219 } |
222 } | 220 } |
223 | 221 |
224 test_convertElement_constructor() async { | 222 test_convertElement_constructor() async { |
225 analyzer.Source source = addSource( | 223 analyzer.Source source = addSource(testFile, ''' |
226 testFile, | |
227 ''' | |
228 class A { | 224 class A { |
229 const A.myConstructor(int a, [String b]); | 225 const A.myConstructor(int a, [String b]); |
230 }'''); | 226 }'''); |
231 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 227 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
232 analyzer.ConstructorElement engineElement = | 228 analyzer.ConstructorElement engineElement = |
233 findElementInUnit(unit, 'myConstructor'); | 229 findElementInUnit(unit, 'myConstructor'); |
234 // create notification Element | 230 // create notification Element |
235 plugin.Element element = converter.convertElement(engineElement); | 231 plugin.Element element = converter.convertElement(engineElement); |
236 expect(element.kind, plugin.ElementKind.CONSTRUCTOR); | 232 expect(element.kind, plugin.ElementKind.CONSTRUCTOR); |
237 expect(element.name, 'myConstructor'); | 233 expect(element.name, 'myConstructor'); |
(...skipping 17 matching lines...) Expand all Loading... |
255 plugin.Element element = converter.convertElement(engineElement); | 251 plugin.Element element = converter.convertElement(engineElement); |
256 expect(element.kind, plugin.ElementKind.UNKNOWN); | 252 expect(element.kind, plugin.ElementKind.UNKNOWN); |
257 expect(element.name, 'dynamic'); | 253 expect(element.name, 'dynamic'); |
258 expect(element.location, isNull); | 254 expect(element.location, isNull); |
259 expect(element.parameters, isNull); | 255 expect(element.parameters, isNull); |
260 expect(element.returnType, isNull); | 256 expect(element.returnType, isNull); |
261 expect(element.flags, 0); | 257 expect(element.flags, 0); |
262 } | 258 } |
263 | 259 |
264 test_convertElement_enum() async { | 260 test_convertElement_enum() async { |
265 analyzer.Source source = addSource( | 261 analyzer.Source source = addSource(testFile, ''' |
266 testFile, | |
267 ''' | |
268 @deprecated | 262 @deprecated |
269 enum _E1 { one, two } | 263 enum _E1 { one, two } |
270 enum E2 { three, four }'''); | 264 enum E2 { three, four }'''); |
271 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 265 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
272 { | 266 { |
273 analyzer.ClassElement engineElement = findElementInUnit(unit, '_E1'); | 267 analyzer.ClassElement engineElement = findElementInUnit(unit, '_E1'); |
274 expect(engineElement.isDeprecated, isTrue); | 268 expect(engineElement.isDeprecated, isTrue); |
275 // create notification Element | 269 // create notification Element |
276 plugin.Element element = converter.convertElement(engineElement); | 270 plugin.Element element = converter.convertElement(engineElement); |
277 expect(element.kind, plugin.ElementKind.ENUM); | 271 expect(element.kind, plugin.ElementKind.ENUM); |
(...skipping 18 matching lines...) Expand all Loading... |
296 // create notification Element | 290 // create notification Element |
297 plugin.Element element = converter.convertElement(engineElement); | 291 plugin.Element element = converter.convertElement(engineElement); |
298 expect(element.kind, plugin.ElementKind.ENUM); | 292 expect(element.kind, plugin.ElementKind.ENUM); |
299 expect(element.name, 'E2'); | 293 expect(element.name, 'E2'); |
300 expect(element.typeParameters, isNull); | 294 expect(element.typeParameters, isNull); |
301 expect(element.flags, 0); | 295 expect(element.flags, 0); |
302 } | 296 } |
303 } | 297 } |
304 | 298 |
305 test_convertElement_enumConstant() async { | 299 test_convertElement_enumConstant() async { |
306 analyzer.Source source = addSource( | 300 analyzer.Source source = addSource(testFile, ''' |
307 testFile, | |
308 ''' | |
309 @deprecated | 301 @deprecated |
310 enum _E1 { one, two } | 302 enum _E1 { one, two } |
311 enum E2 { three, four }'''); | 303 enum E2 { three, four }'''); |
312 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 304 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
313 { | 305 { |
314 analyzer.FieldElement engineElement = findElementInUnit(unit, 'one'); | 306 analyzer.FieldElement engineElement = findElementInUnit(unit, 'one'); |
315 // create notification Element | 307 // create notification Element |
316 plugin.Element element = converter.convertElement(engineElement); | 308 plugin.Element element = converter.convertElement(engineElement); |
317 expect(element.kind, plugin.ElementKind.ENUM_CONSTANT); | 309 expect(element.kind, plugin.ElementKind.ENUM_CONSTANT); |
318 expect(element.name, 'one'); | 310 expect(element.name, 'one'); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 expect(location.startColumn, 0); | 381 expect(location.startColumn, 0); |
390 } | 382 } |
391 expect(element.parameters, isNull); | 383 expect(element.parameters, isNull); |
392 expect(element.returnType, 'List<E2>'); | 384 expect(element.returnType, 'List<E2>'); |
393 expect(element.flags, | 385 expect(element.flags, |
394 plugin.Element.FLAG_CONST | plugin.Element.FLAG_STATIC); | 386 plugin.Element.FLAG_CONST | plugin.Element.FLAG_STATIC); |
395 } | 387 } |
396 } | 388 } |
397 | 389 |
398 test_convertElement_field() async { | 390 test_convertElement_field() async { |
399 analyzer.Source source = addSource( | 391 analyzer.Source source = addSource(testFile, ''' |
400 testFile, | |
401 ''' | |
402 class A { | 392 class A { |
403 static const myField = 42; | 393 static const myField = 42; |
404 }'''); | 394 }'''); |
405 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 395 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
406 analyzer.FieldElement engineElement = findElementInUnit(unit, 'myField'); | 396 analyzer.FieldElement engineElement = findElementInUnit(unit, 'myField'); |
407 // create notification Element | 397 // create notification Element |
408 plugin.Element element = converter.convertElement(engineElement); | 398 plugin.Element element = converter.convertElement(engineElement); |
409 expect(element.kind, plugin.ElementKind.FIELD); | 399 expect(element.kind, plugin.ElementKind.FIELD); |
410 expect(element.name, 'myField'); | 400 expect(element.name, 'myField'); |
411 { | 401 { |
412 plugin.Location location = element.location; | 402 plugin.Location location = element.location; |
413 expect(location.file, testFile); | 403 expect(location.file, testFile); |
414 expect(location.offset, 25); | 404 expect(location.offset, 25); |
415 expect(location.length, 'myField'.length); | 405 expect(location.length, 'myField'.length); |
416 expect(location.startLine, 2); | 406 expect(location.startLine, 2); |
417 expect(location.startColumn, 16); | 407 expect(location.startColumn, 16); |
418 } | 408 } |
419 expect(element.parameters, isNull); | 409 expect(element.parameters, isNull); |
420 expect(element.returnType, 'dynamic'); | 410 expect(element.returnType, 'dynamic'); |
421 expect( | 411 expect( |
422 element.flags, plugin.Element.FLAG_CONST | plugin.Element.FLAG_STATIC); | 412 element.flags, plugin.Element.FLAG_CONST | plugin.Element.FLAG_STATIC); |
423 } | 413 } |
424 | 414 |
425 test_convertElement_functionTypeAlias() async { | 415 test_convertElement_functionTypeAlias() async { |
426 analyzer.Source source = addSource( | 416 analyzer.Source source = addSource(testFile, ''' |
427 testFile, | |
428 ''' | |
429 typedef int F<T>(String x); | 417 typedef int F<T>(String x); |
430 '''); | 418 '''); |
431 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 419 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
432 analyzer.FunctionTypeAliasElement engineElement = | 420 analyzer.FunctionTypeAliasElement engineElement = |
433 findElementInUnit(unit, 'F'); | 421 findElementInUnit(unit, 'F'); |
434 // create notification Element | 422 // create notification Element |
435 plugin.Element element = converter.convertElement(engineElement); | 423 plugin.Element element = converter.convertElement(engineElement); |
436 expect(element.kind, plugin.ElementKind.FUNCTION_TYPE_ALIAS); | 424 expect(element.kind, plugin.ElementKind.FUNCTION_TYPE_ALIAS); |
437 expect(element.name, 'F'); | 425 expect(element.name, 'F'); |
438 expect(element.typeParameters, '<T>'); | 426 expect(element.typeParameters, '<T>'); |
439 { | 427 { |
440 plugin.Location location = element.location; | 428 plugin.Location location = element.location; |
441 expect(location.file, testFile); | 429 expect(location.file, testFile); |
442 expect(location.offset, 12); | 430 expect(location.offset, 12); |
443 expect(location.length, 'F'.length); | 431 expect(location.length, 'F'.length); |
444 expect(location.startLine, 1); | 432 expect(location.startLine, 1); |
445 expect(location.startColumn, 13); | 433 expect(location.startColumn, 13); |
446 } | 434 } |
447 expect(element.parameters, '(String x)'); | 435 expect(element.parameters, '(String x)'); |
448 expect(element.returnType, 'int'); | 436 expect(element.returnType, 'int'); |
449 expect(element.flags, 0); | 437 expect(element.flags, 0); |
450 } | 438 } |
451 | 439 |
452 test_convertElement_getter() async { | 440 test_convertElement_getter() async { |
453 analyzer.Source source = addSource( | 441 analyzer.Source source = addSource(testFile, ''' |
454 testFile, | |
455 ''' | |
456 class A { | 442 class A { |
457 String get myGetter => 42; | 443 String get myGetter => 42; |
458 }'''); | 444 }'''); |
459 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 445 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
460 analyzer.PropertyAccessorElement engineElement = | 446 analyzer.PropertyAccessorElement engineElement = |
461 findElementInUnit(unit, 'myGetter', analyzer.ElementKind.GETTER); | 447 findElementInUnit(unit, 'myGetter', analyzer.ElementKind.GETTER); |
462 // create notification Element | 448 // create notification Element |
463 plugin.Element element = converter.convertElement(engineElement); | 449 plugin.Element element = converter.convertElement(engineElement); |
464 expect(element.kind, plugin.ElementKind.GETTER); | 450 expect(element.kind, plugin.ElementKind.GETTER); |
465 expect(element.name, 'myGetter'); | 451 expect(element.name, 'myGetter'); |
466 { | 452 { |
467 plugin.Location location = element.location; | 453 plugin.Location location = element.location; |
468 expect(location.file, testFile); | 454 expect(location.file, testFile); |
469 expect(location.offset, 23); | 455 expect(location.offset, 23); |
470 expect(location.length, 'myGetter'.length); | 456 expect(location.length, 'myGetter'.length); |
471 expect(location.startLine, 2); | 457 expect(location.startLine, 2); |
472 expect(location.startColumn, 14); | 458 expect(location.startColumn, 14); |
473 } | 459 } |
474 expect(element.parameters, isNull); | 460 expect(element.parameters, isNull); |
475 expect(element.returnType, 'String'); | 461 expect(element.returnType, 'String'); |
476 expect(element.flags, 0); | 462 expect(element.flags, 0); |
477 } | 463 } |
478 | 464 |
479 test_convertElement_method() async { | 465 test_convertElement_method() async { |
480 analyzer.Source source = addSource( | 466 analyzer.Source source = addSource(testFile, ''' |
481 testFile, | |
482 ''' | |
483 class A { | 467 class A { |
484 static List<String> myMethod(int a, {String b, int c}) { | 468 static List<String> myMethod(int a, {String b, int c}) { |
485 return null; | 469 return null; |
486 } | 470 } |
487 }'''); | 471 }'''); |
488 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 472 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
489 analyzer.MethodElement engineElement = findElementInUnit(unit, 'myMethod'); | 473 analyzer.MethodElement engineElement = findElementInUnit(unit, 'myMethod'); |
490 // create notification Element | 474 // create notification Element |
491 plugin.Element element = converter.convertElement(engineElement); | 475 plugin.Element element = converter.convertElement(engineElement); |
492 expect(element.kind, plugin.ElementKind.METHOD); | 476 expect(element.kind, plugin.ElementKind.METHOD); |
493 expect(element.name, 'myMethod'); | 477 expect(element.name, 'myMethod'); |
494 { | 478 { |
495 plugin.Location location = element.location; | 479 plugin.Location location = element.location; |
496 expect(location.file, testFile); | 480 expect(location.file, testFile); |
497 expect(location.offset, 32); | 481 expect(location.offset, 32); |
498 expect(location.length, 'myGetter'.length); | 482 expect(location.length, 'myGetter'.length); |
499 expect(location.startLine, 2); | 483 expect(location.startLine, 2); |
500 expect(location.startColumn, 23); | 484 expect(location.startColumn, 23); |
501 } | 485 } |
502 expect(element.parameters, '(int a, {String b, int c})'); | 486 expect(element.parameters, '(int a, {String b, int c})'); |
503 expect(element.returnType, 'List<String>'); | 487 expect(element.returnType, 'List<String>'); |
504 expect(element.flags, plugin.Element.FLAG_STATIC); | 488 expect(element.flags, plugin.Element.FLAG_STATIC); |
505 } | 489 } |
506 | 490 |
507 test_convertElement_setter() async { | 491 test_convertElement_setter() async { |
508 analyzer.Source source = addSource( | 492 analyzer.Source source = addSource(testFile, ''' |
509 testFile, | |
510 ''' | |
511 class A { | 493 class A { |
512 set mySetter(String x) {} | 494 set mySetter(String x) {} |
513 }'''); | 495 }'''); |
514 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 496 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
515 analyzer.PropertyAccessorElement engineElement = | 497 analyzer.PropertyAccessorElement engineElement = |
516 findElementInUnit(unit, 'mySetter', analyzer.ElementKind.SETTER); | 498 findElementInUnit(unit, 'mySetter', analyzer.ElementKind.SETTER); |
517 // create notification Element | 499 // create notification Element |
518 plugin.Element element = converter.convertElement(engineElement); | 500 plugin.Element element = converter.convertElement(engineElement); |
519 expect(element.kind, plugin.ElementKind.SETTER); | 501 expect(element.kind, plugin.ElementKind.SETTER); |
520 expect(element.name, 'mySetter'); | 502 expect(element.name, 'mySetter'); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 } | 557 } |
576 } | 558 } |
577 | 559 |
578 test_convertErrorType() { | 560 test_convertErrorType() { |
579 for (analyzer.ErrorType type in analyzer.ErrorType.values) { | 561 for (analyzer.ErrorType type in analyzer.ErrorType.values) { |
580 expect(converter.convertErrorType(type), isNotNull, reason: type.name); | 562 expect(converter.convertErrorType(type), isNotNull, reason: type.name); |
581 } | 563 } |
582 } | 564 } |
583 | 565 |
584 test_fromElement_LABEL() async { | 566 test_fromElement_LABEL() async { |
585 analyzer.Source source = addSource( | 567 analyzer.Source source = addSource(testFile, ''' |
586 testFile, | |
587 ''' | |
588 main() { | 568 main() { |
589 myLabel: | 569 myLabel: |
590 while (true) { | 570 while (true) { |
591 break myLabel; | 571 break myLabel; |
592 } | 572 } |
593 }'''); | 573 }'''); |
594 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); | 574 analyzer.CompilationUnit unit = await resolveLibraryUnit(source); |
595 analyzer.LabelElement engineElement = findElementInUnit(unit, 'myLabel'); | 575 analyzer.LabelElement engineElement = findElementInUnit(unit, 'myLabel'); |
596 // create notification Element | 576 // create notification Element |
597 plugin.Element element = converter.convertElement(engineElement); | 577 plugin.Element element = converter.convertElement(engineElement); |
598 expect(element.kind, plugin.ElementKind.LABEL); | 578 expect(element.kind, plugin.ElementKind.LABEL); |
599 expect(element.name, 'myLabel'); | 579 expect(element.name, 'myLabel'); |
600 { | 580 { |
601 plugin.Location location = element.location; | 581 plugin.Location location = element.location; |
602 expect(location.file, testFile); | 582 expect(location.file, testFile); |
603 expect(location.offset, 9); | 583 expect(location.offset, 9); |
604 expect(location.length, 'myLabel'.length); | 584 expect(location.length, 'myLabel'.length); |
605 expect(location.startLine, 2); | 585 expect(location.startLine, 2); |
606 expect(location.startColumn, 1); | 586 expect(location.startColumn, 1); |
607 } | 587 } |
608 expect(element.parameters, isNull); | 588 expect(element.parameters, isNull); |
609 expect(element.returnType, isNull); | 589 expect(element.returnType, isNull); |
610 expect(element.flags, 0); | 590 expect(element.flags, 0); |
611 } | 591 } |
612 } | 592 } |
OLD | NEW |