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 // 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 part of analyzer2dart.element_converter; | 5 part of analyzer2dart.element_converter; |
| 6 | 6 |
| 7 | 7 |
| 8 /// Base [dart2js.Element] implementation for converted analyzer elements. | 8 /// Base [dart2js.Element] implementation for converted analyzer elements. |
| 9 class ElementY extends dart2js.Element { | 9 class ElementY extends dart2js.Element { |
| 10 final ElementConverter converter; | 10 final ElementConverter converter; |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 @override | 230 @override |
| 231 void addMember(element, listener) => unsupported('addMember'); | 231 void addMember(element, listener) => unsupported('addMember'); |
| 232 | 232 |
| 233 @override | 233 @override |
| 234 void addTag(tag, listener) => unsupported('addTag'); | 234 void addTag(tag, listener) => unsupported('addTag'); |
| 235 | 235 |
| 236 @override | 236 @override |
| 237 void addToScope(element, listener) => unsupported('addToScope'); | 237 void addToScope(element, listener) => unsupported('addToScope'); |
| 238 | 238 |
| 239 @override | 239 @override |
| 240 void set canUseNative(bool value) => unsupported('canUseNative'); | |
|
Johnni Winther
2015/01/28 13:38:01
Cleanup.
| |
| 241 | |
| 242 @override | |
| 243 bool get canUseNative => unsupported('canUseNative'); | 240 bool get canUseNative => unsupported('canUseNative'); |
| 244 | 241 |
| 245 @override | 242 @override |
| 246 Uri get canonicalUri => unsupported('canonicalUri'); | 243 Uri get canonicalUri => unsupported('canonicalUri'); |
| 247 | 244 |
| 248 @override | 245 @override |
| 249 int compareTo(other) => unsupported('compareTo'); | 246 int compareTo(other) => unsupported('compareTo'); |
| 250 | 247 |
| 251 @override | 248 @override |
| 252 get compilationUnits => unsupported('compilationUnits'); | 249 get compilationUnits => unsupported('compilationUnits'); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 340 // TODO(johnniwinther): Ensure the correct semantics of this. | 337 // TODO(johnniwinther): Ensure the correct semantics of this. |
| 341 @override | 338 @override |
| 342 bool get isAbstract => false; | 339 bool get isAbstract => false; |
| 343 | 340 |
| 344 @override | 341 @override |
| 345 dart2js.ClassElement get enclosingClass => null; | 342 dart2js.ClassElement get enclosingClass => null; |
| 346 } | 343 } |
| 347 | 344 |
| 348 abstract class FunctionElementMixin | 345 abstract class FunctionElementMixin |
| 349 implements ElementY, dart2js.FunctionElement { | 346 implements ElementY, dart2js.FunctionElement { |
| 347 analyzer.ExecutableElement get element; | |
| 350 | 348 |
| 351 // TODO(johnniwinther): Ensure the correct semantics of this. | 349 // TODO(johnniwinther): Ensure the correct semantics of this. |
| 352 @override | 350 @override |
| 353 bool get isExternal => false; | 351 bool get isExternal => false; |
| 354 | 352 |
| 355 @override | 353 @override |
| 356 bool get isConst => false; | 354 bool get isConst => false; |
| 357 | 355 |
| 358 @override | 356 @override |
| 359 get abstractField => unsupported('abstractField'); | 357 get abstractField => unsupported('abstractField'); |
| 360 | 358 |
| 361 @override | 359 @override |
| 362 computeSignature(_) => unsupported('computeSignature'); | 360 computeSignature(_) => unsupported('computeSignature'); |
| 363 | 361 |
| 364 @override | 362 @override |
| 365 get memberContext => unsupported('memberContext'); | 363 get memberContext => unsupported('memberContext'); |
| 366 | 364 |
| 367 @override | 365 @override |
| 368 get functionSignature => unsupported('functionSignature'); | 366 get functionSignature => unsupported('functionSignature'); |
| 369 | 367 |
| 370 @override | 368 @override |
| 371 bool get hasFunctionSignature => unsupported('hasFunctionSignature'); | 369 bool get hasFunctionSignature => unsupported('hasFunctionSignature'); |
| 372 | 370 |
| 373 @override | 371 @override |
| 374 get asyncMarker => unsupported('asyncMarker'); | 372 get asyncMarker => unsupported('asyncMarker'); |
| 373 | |
| 374 @override | |
| 375 List<dart2js.ParameterElement> get parameters { | |
| 376 return element.parameters.map(converter.convertElement).toList(); | |
| 377 } | |
| 378 | |
| 379 @override | |
| 380 dart2js.FunctionType get type => converter.convertType(element.type); | |
| 375 } | 381 } |
| 376 | 382 |
| 377 class TopLevelFunctionElementY extends ElementY | 383 class TopLevelFunctionElementY extends ElementY |
| 378 with AnalyzableElementY, | 384 with AnalyzableElementY, |
| 379 AstElementY, | 385 AstElementY, |
| 380 TopLevelElementMixin, | 386 TopLevelElementMixin, |
| 381 FunctionElementMixin | 387 FunctionElementMixin |
| 382 implements dart2js.FunctionElement { | 388 implements dart2js.FunctionElement { |
| 383 analyzer.FunctionElement get element => super.element; | 389 analyzer.FunctionElement get element => super.element; |
| 384 | 390 |
| 385 @override | 391 @override |
| 386 dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION; | 392 dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION; |
| 387 | 393 |
| 388 @override | |
| 389 dart2js.FunctionType get type => converter.convertType(element.type); | |
| 390 | |
| 391 TopLevelFunctionElementY(ElementConverter converter, | 394 TopLevelFunctionElementY(ElementConverter converter, |
| 392 analyzer.FunctionElement element) | 395 analyzer.FunctionElement element) |
| 393 : super(converter, element); | 396 : super(converter, element); |
| 394 } | 397 } |
| 395 | 398 |
| 396 class LocalFunctionElementY extends ElementY | 399 class LocalFunctionElementY extends ElementY |
| 397 with AnalyzableElementY, | 400 with AnalyzableElementY, |
| 398 AstElementY, | 401 AstElementY, |
| 399 LocalElementMixin, | 402 LocalElementMixin, |
| 400 FunctionElementMixin | 403 FunctionElementMixin |
| 401 implements dart2js.LocalFunctionElement { | 404 implements dart2js.LocalFunctionElement { |
| 402 analyzer.FunctionElement get element => super.element; | 405 analyzer.FunctionElement get element => super.element; |
| 403 | 406 |
| 404 @override | 407 @override |
| 405 dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION; | 408 dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION; |
| 406 | 409 |
| 407 @override | 410 @override |
| 408 dart2js.FunctionType get type => converter.convertType(element.type); | |
| 409 | |
| 410 @override | |
| 411 bool get isAbstract => false; | 411 bool get isAbstract => false; |
| 412 | 412 |
| 413 @override | 413 @override |
| 414 bool get isConst => false; | 414 bool get isConst => false; |
| 415 | 415 |
| 416 LocalFunctionElementY(ElementConverter converter, | 416 LocalFunctionElementY(ElementConverter converter, |
| 417 analyzer.FunctionElement element) | 417 analyzer.FunctionElement element) |
| 418 : super(converter, element); | 418 : super(converter, element); |
| 419 } | 419 } |
| 420 | 420 |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 432 | 432 |
| 433 @override | 433 @override |
| 434 bool get isLocal => true; | 434 bool get isLocal => true; |
| 435 | 435 |
| 436 @override | 436 @override |
| 437 bool get isStatic => false; | 437 bool get isStatic => false; |
| 438 | 438 |
| 439 @override | 439 @override |
| 440 bool get isConst => false; | 440 bool get isConst => false; |
| 441 | 441 |
| 442 @override | |
| 443 bool get isNamed => element.parameterKind == ParameterKind.NAMED; | |
| 444 | |
| 445 @override | |
| 446 bool get isOptional => element.parameterKind.isOptional; | |
| 447 | |
| 442 ParameterElementY(ElementConverter converter, | 448 ParameterElementY(ElementConverter converter, |
| 443 analyzer.ParameterElement element) | 449 analyzer.ParameterElement element) |
| 444 : super(converter, element) { | 450 : super(converter, element) { |
| 445 assert(!element.isInitializingFormal); | 451 assert(!element.isInitializingFormal); |
| 446 } | 452 } |
| 447 | 453 |
| 448 @override | 454 @override |
| 449 get executableContext => unsupported('executableContext'); | 455 get executableContext => unsupported('executableContext'); |
| 450 | 456 |
| 451 @override | 457 @override |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 479 get rawType => null;//unsupported('rawType'); | 485 get rawType => null;//unsupported('rawType'); |
| 480 | 486 |
| 481 @override | 487 @override |
| 482 int get resolutionState => unsupported('resolutionState'); | 488 int get resolutionState => unsupported('resolutionState'); |
| 483 | 489 |
| 484 @override | 490 @override |
| 485 get thisType => unsupported('thisType'); | 491 get thisType => unsupported('thisType'); |
| 486 | 492 |
| 487 @override | 493 @override |
| 488 get typeVariables => unsupported('typeVariables'); | 494 get typeVariables => unsupported('typeVariables'); |
| 489 | |
| 490 } | 495 } |
| 491 | 496 |
| 492 class ClassElementY extends TypeDeclarationElementY | 497 class ClassElementY extends TypeDeclarationElementY |
| 493 implements dart2js.ClassElement { | 498 implements dart2js.ClassElement { |
| 494 | 499 |
| 495 analyzer.ClassElement get element => super.element; | 500 analyzer.ClassElement get element => super.element; |
| 496 | 501 |
| 497 dart2js.ElementKind get kind => dart2js.ElementKind.CLASS; | 502 dart2js.ElementKind get kind => dart2js.ElementKind.CLASS; |
| 498 | 503 |
| 499 @override | 504 @override |
| 500 bool get isObject => element.type.isObject; | 505 bool get isObject => element.type.isObject; |
| 501 | 506 |
| 507 // TODO(johnniwinther): Ensure the correct semantics. | |
| 508 // TODO(paulberry,brianwilkerson): [ClassElement.isTypedef] should probably | |
| 509 // be renamed to [ClassElement.isNamedMixinApplication]. | |
| 510 @override | |
| 511 bool get isMixinApplication => element.isTypedef; | |
| 512 | |
| 513 @override | |
| 514 bool get isUnnamedMixinApplication => false; | |
| 515 | |
| 516 @override | |
| 517 bool get isEnumClass => element.isEnum; | |
| 518 | |
| 519 @override | |
| 520 bool get isAbstract => element.isAbstract; | |
| 521 | |
| 522 // TODO(johnniwinther): Semantic difference: Dart2js points to unnamed | |
| 523 // mixin applications, analyzer points to the type in the extends clause or | |
| 524 // Object if omitted. | |
| 525 @override | |
| 526 dart2js.DartType get supertype { | |
| 527 return element.supertype != null | |
| 528 ? converter.convertType(element.supertype) | |
| 529 : null; | |
| 530 } | |
| 531 | |
| 532 @override | |
| 533 util.Link<dart2js.DartType> get interfaces { | |
| 534 // TODO(johnniwinther): Support interfaces. | |
| 535 return const util.Link<dart2js.DartType>(); | |
| 536 } | |
| 537 | |
| 538 // TODO(johnniwinther): Support generic classes. | |
| 539 @override | |
| 540 List<dart2js.DartType> get typeVariables => const []; | |
| 541 | |
| 542 @override | |
| 543 bool get isStatic => false; | |
| 544 | |
| 545 @override | |
| 546 bool get isTopLevel => true; | |
| 547 | |
| 548 @override | |
| 549 dart2js.ClassElement get enclosingClass => this; | |
| 550 | |
| 502 ClassElementY(ElementConverter converter, analyzer.ClassElement element) | 551 ClassElementY(ElementConverter converter, analyzer.ClassElement element) |
| 503 : super(converter, element); | 552 : super(converter, element); |
| 504 | 553 |
| 505 @override | 554 @override |
| 506 void addBackendMember(element) => unsupported('addBackendMember'); | 555 void addBackendMember(element) => unsupported('addBackendMember'); |
| 507 | 556 |
| 508 @override | 557 @override |
| 509 void addMember(element, listener) => unsupported('addMember'); | 558 void addMember(element, listener) => unsupported('addMember'); |
| 510 | 559 |
| 511 @override | 560 @override |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 577 @override | 626 @override |
| 578 int get id => unsupported('id'); | 627 int get id => unsupported('id'); |
| 579 | 628 |
| 580 @override | 629 @override |
| 581 bool implementsFunction(compiler) => unsupported('implementsFunction'); | 630 bool implementsFunction(compiler) => unsupported('implementsFunction'); |
| 582 | 631 |
| 583 @override | 632 @override |
| 584 bool implementsInterface(intrface) => unsupported('implementsInterface'); | 633 bool implementsInterface(intrface) => unsupported('implementsInterface'); |
| 585 | 634 |
| 586 @override | 635 @override |
| 587 get interfaces => unsupported('interfaces'); | |
| 588 | |
| 589 @override | |
| 590 bool get isProxy => unsupported('isProxy'); | 636 bool get isProxy => unsupported('isProxy'); |
| 591 | 637 |
| 592 @override | 638 @override |
| 593 bool isSubclassOf(cls) => unsupported('isSubclassOf'); | 639 bool isSubclassOf(cls) => unsupported('isSubclassOf'); |
| 594 | 640 |
| 595 @override | 641 @override |
| 596 get isUnnamedMixinApplication => unsupported('isUnnamedMixinApplication'); | |
| 597 | |
| 598 @override | |
| 599 localLookup(String elementName) => unsupported('localLookup'); | 642 localLookup(String elementName) => unsupported('localLookup'); |
| 600 | 643 |
| 601 @override | 644 @override |
| 602 lookupBackendMember(String memberName) => unsupported('lookupBackendMember'); | 645 lookupBackendMember(String memberName) => unsupported('lookupBackendMember'); |
| 603 | 646 |
| 604 @override | 647 @override |
| 605 lookupClassMember(name) => unsupported('lookupClassMember'); | 648 lookupClassMember(name) => unsupported('lookupClassMember'); |
| 606 | 649 |
| 607 @override | 650 @override |
| 608 lookupConstructor(selector, [noMatch]) => unsupported('lookupConstructor'); | 651 lookupConstructor(selector, [noMatch]) => unsupported('lookupConstructor'); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 630 @override | 673 @override |
| 631 lookupSuperSelector(selector) => unsupported('lookupSuperSelector'); | 674 lookupSuperSelector(selector) => unsupported('lookupSuperSelector'); |
| 632 | 675 |
| 633 @override | 676 @override |
| 634 String get nativeTagInfo => unsupported('nativeTagInfo'); | 677 String get nativeTagInfo => unsupported('nativeTagInfo'); |
| 635 | 678 |
| 636 @override | 679 @override |
| 637 void reverseBackendMembers() => unsupported('reverseBackendMembers'); | 680 void reverseBackendMembers() => unsupported('reverseBackendMembers'); |
| 638 | 681 |
| 639 @override | 682 @override |
| 640 void setDefaultConstructor(constructor, compiler) { | |
| 641 unsupported('setDefaultConstructor'); | |
| 642 } | |
| 643 | |
| 644 @override | |
| 645 dart2js.ClassElement get superclass => unsupported('superclass'); | 683 dart2js.ClassElement get superclass => unsupported('superclass'); |
| 646 | 684 |
| 647 // TODO(johnniwinther): Semantic difference: Dart2js points to unnamed | |
| 648 // mixin applications, analyzer points to the type in the extends clause or | |
| 649 // Object if omitted. | |
| 650 @override | |
| 651 dart2js.DartType get supertype => unsupported('supertype'); | |
| 652 | |
| 653 @override | 685 @override |
| 654 int get supertypeLoadState => unsupported('supertypeLoadState'); | 686 int get supertypeLoadState => unsupported('supertypeLoadState'); |
| 655 | 687 |
| 656 @override | 688 @override |
| 657 validateConstructorLookupResults(selector, result, noMatch) { | 689 validateConstructorLookupResults(selector, result, noMatch) { |
| 658 unsupported('validateConstructorLookupResults'); | 690 unsupported('validateConstructorLookupResults'); |
| 659 } | 691 } |
| 660 | |
| 661 @override | |
| 662 bool get isEnumClass => unsupported('isEnum'); | |
| 663 } | 692 } |
| 664 | 693 |
| 665 class TypedefElementY extends TypeDeclarationElementY | 694 class TypedefElementY extends TypeDeclarationElementY |
| 666 implements dart2js.TypedefElement { | 695 implements dart2js.TypedefElement { |
| 667 | 696 |
| 668 analyzer.FunctionTypeAliasElement get element => super.element; | 697 analyzer.FunctionTypeAliasElement get element => super.element; |
| 669 | 698 |
| 670 dart2js.ElementKind get kind => dart2js.ElementKind.TYPEDEF; | 699 dart2js.ElementKind get kind => dart2js.ElementKind.TYPEDEF; |
| 671 | 700 |
| 672 TypedefElementY(ElementConverter converter, | 701 TypedefElementY(ElementConverter converter, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 751 bool get isConst => element.isConst; | 780 bool get isConst => element.isConst; |
| 752 | 781 |
| 753 LocalVariableElementY(ElementConverter converter, | 782 LocalVariableElementY(ElementConverter converter, |
| 754 analyzer.LocalVariableElement element) | 783 analyzer.LocalVariableElement element) |
| 755 : super(converter, element); | 784 : super(converter, element); |
| 756 | 785 |
| 757 @override | 786 @override |
| 758 dart2js.DartType get type => unsupported('type'); | 787 dart2js.DartType get type => unsupported('type'); |
| 759 } | 788 } |
| 760 | 789 |
| 761 class ConstructorElementY extends ElementY | 790 abstract class ClassMemberMixin implements ElementY { |
| 762 with AnalyzableElementY, | 791 analyzer.ClassMemberElement get element; |
| 763 AstElementY, | |
| 764 FunctionElementMixin | |
| 765 implements dart2js.ConstructorElement { | |
| 766 | 792 |
| 767 analyzer.ConstructorElement get element => super.element; | 793 @override |
| 794 dart2js.ClassElement get contextClass => enclosingClass; | |
| 768 | 795 |
| 769 @override | 796 @override |
| 770 dart2js.ClassElement get enclosingClass { | 797 dart2js.ClassElement get enclosingClass { |
| 771 return converter.convertElement(element.enclosingElement); | 798 return converter.convertElement(element.enclosingElement); |
| 772 } | 799 } |
| 773 | 800 |
| 801 @override | |
| 802 bool get isClassMember => true; | |
| 803 } | |
| 804 | |
| 805 class ConstructorElementY extends ElementY | |
| 806 with AnalyzableElementY, | |
| 807 AstElementY, | |
| 808 FunctionElementMixin, | |
| 809 ClassMemberMixin | |
| 810 implements dart2js.ConstructorElement { | |
| 811 | |
| 812 analyzer.ConstructorElement get element => super.element; | |
| 813 | |
| 774 // TODO(johnniwinther): Support redirecting/factory constructors. | 814 // TODO(johnniwinther): Support redirecting/factory constructors. |
| 775 @override | 815 @override |
| 776 dart2js.ElementKind get kind => dart2js.ElementKind.GENERATIVE_CONSTRUCTOR; | 816 dart2js.ElementKind get kind => dart2js.ElementKind.GENERATIVE_CONSTRUCTOR; |
| 777 | 817 |
| 818 // TODO(johnniwinther): Support factory constructors. | |
| 819 @override | |
| 820 bool get isFactoryConstructor => false; | |
| 821 | |
| 822 // TODO(johnniwinther): Support redirecting factory constructors. | |
| 823 @override | |
| 824 bool get isRedirectingFactory => false; | |
| 825 | |
| 826 @override | |
| 827 bool get isStatic => false; | |
| 828 | |
| 778 ConstructorElementY(ElementConverter converter, | 829 ConstructorElementY(ElementConverter converter, |
| 779 analyzer.ConstructorElement element) | 830 analyzer.ConstructorElement element) |
| 780 : super(converter, element); | 831 : super(converter, element); |
| 781 | 832 |
| 782 @override | 833 @override |
| 783 computeEffectiveTargetType(_) => unsupported('computeEffectiveTargetType'); | 834 computeEffectiveTargetType(_) => unsupported('computeEffectiveTargetType'); |
| 784 | 835 |
| 785 @override | 836 @override |
| 786 get definingConstructor => unsupported('definingConstructor'); | 837 get definingConstructor => unsupported('definingConstructor'); |
| 787 | 838 |
| 788 @override | 839 @override |
| 789 get effectiveTarget => unsupported('effectiveTarget'); | 840 get effectiveTarget => unsupported('effectiveTarget'); |
| 790 | 841 |
| 791 @override | 842 @override |
| 792 get immediateRedirectionTarget => unsupported('immediateRedirectionTarget'); | 843 get immediateRedirectionTarget => unsupported('immediateRedirectionTarget'); |
| 793 | 844 |
| 794 @override | 845 @override |
| 795 bool get isRedirectingFactory => unsupported('isRedirectingFactory'); | |
| 796 | |
| 797 @override | |
| 798 get nestedClosures => unsupported('nestedClosures'); | 846 get nestedClosures => unsupported('nestedClosures'); |
| 799 | |
| 800 @override | |
| 801 get type => unsupported('type'); | |
| 802 } | 847 } |
| OLD | NEW |