Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: pkg/analyzer2dart/lib/src/modely.dart

Issue 867233004: Support constructor declarations in analyzer2dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698