Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library mirrors_dart2js; | 5 library mirrors_dart2js; |
| 6 | 6 |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 import 'dart:uri'; | 8 import 'dart:uri'; |
| 9 | 9 |
| 10 import '../../../../../lib/compiler/compiler.dart' as diagnostics; | 10 import '../../../../../lib/compiler/compiler.dart' as diagnostics; |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 471 String get simpleName => "mirror"; | 471 String get simpleName => "mirror"; |
| 472 String get displayName => simpleName; | 472 String get displayName => simpleName; |
| 473 String get qualifiedName => simpleName; | 473 String get qualifiedName => simpleName; |
| 474 | 474 |
| 475 // TODO(johnniwinther): Hack! Dart2JsMirrorSystem need not be a Mirror. | 475 // TODO(johnniwinther): Hack! Dart2JsMirrorSystem need not be a Mirror. |
| 476 int get hashCode => qualifiedName.hashCode; | 476 int get hashCode => qualifiedName.hashCode; |
| 477 } | 477 } |
| 478 | 478 |
| 479 abstract class Dart2JsObjectMirror extends Dart2JsElementMirror | 479 abstract class Dart2JsObjectMirror extends Dart2JsElementMirror |
| 480 implements ObjectMirror { | 480 implements ObjectMirror { |
| 481 Map<String, MemberMirror> _members; | |
| 482 | |
| 481 Dart2JsObjectMirror(Dart2JsMirrorSystem system, Element element) | 483 Dart2JsObjectMirror(Dart2JsMirrorSystem system, Element element) |
| 482 : super(system, element); | 484 : super(system, element); |
| 485 | |
| 486 abstract void _ensureMembers(); | |
| 487 | |
| 488 Map<String, MemberMirror> get declaredMembers { | |
| 489 _ensureMembers(); | |
| 490 return new ImmutableMapWrapper<String, MemberMirror>(_members); | |
| 491 } | |
| 492 | |
| 493 Map<String, Mirror> get members => declaredMembers; | |
| 494 | |
| 495 Map<String, MethodMirror> get functions { | |
| 496 _ensureMembers(); | |
| 497 return new AsFilteredImmutableMap<String, MemberMirror, MethodMirror>( | |
|
ahe
2012/10/31 08:20:08
This code is really hard to read. Generally, you c
| |
| 498 _members, | |
| 499 (MemberMirror member) => member is MethodMirror); | |
| 500 } | |
| 501 | |
| 502 Map<String, MethodMirror> get getters { | |
| 503 _ensureMembers(); | |
| 504 return new AsFilteredImmutableMap<String, MemberMirror, MethodMirror>( | |
| 505 _members, | |
| 506 (MemberMirror member) => | |
| 507 member is MethodMirror && (member as MethodMirror).isGetter); | |
| 508 } | |
| 509 | |
| 510 Map<String, MethodMirror> get setters { | |
| 511 _ensureMembers(); | |
| 512 return new AsFilteredImmutableMap<String, MemberMirror, MethodMirror>( | |
| 513 _members, | |
| 514 (MemberMirror member) => | |
| 515 member is MethodMirror && (member as MethodMirror).isSetter); | |
| 516 } | |
| 517 | |
| 518 Map<String, VariableMirror> get variables { | |
| 519 _ensureMembers(); | |
| 520 return new AsFilteredImmutableMap<String, MemberMirror, VariableMirror>( | |
| 521 _members, | |
| 522 (MemberMirror member) => member is VariableMirror); | |
| 523 } | |
| 483 } | 524 } |
| 484 | 525 |
| 485 class Dart2JsLibraryMirror extends Dart2JsObjectMirror | 526 class Dart2JsLibraryMirror extends Dart2JsObjectMirror |
| 486 implements LibraryMirror { | 527 implements LibraryMirror { |
| 487 Map<String, ClassMirror> _classes; | 528 Map<String, ClassMirror> _classes; |
| 488 Map<String, MemberMirror> _members; | |
| 489 | 529 |
| 490 Dart2JsLibraryMirror(Dart2JsMirrorSystem system, LibraryElement library) | 530 Dart2JsLibraryMirror(Dart2JsMirrorSystem system, LibraryElement library) |
| 491 : super(system, library); | 531 : super(system, library); |
| 492 | 532 |
| 493 LibraryElement get _library => _element; | 533 LibraryElement get _library => _element; |
| 494 | 534 |
| 495 Uri get uri => _library.uri; | 535 Uri get uri => _library.uri; |
| 496 | 536 |
| 497 DeclarationMirror get owner => null; | 537 DeclarationMirror get owner => null; |
| 498 | 538 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 521 } | 561 } |
| 522 } | 562 } |
| 523 | 563 |
| 524 String get qualifiedName => simpleName; | 564 String get qualifiedName => simpleName; |
| 525 | 565 |
| 526 void _ensureClasses() { | 566 void _ensureClasses() { |
| 527 if (_classes == null) { | 567 if (_classes == null) { |
| 528 _classes = <String, ClassMirror>{}; | 568 _classes = <String, ClassMirror>{}; |
| 529 _library.forEachLocalMember((Element e) { | 569 _library.forEachLocalMember((Element e) { |
| 530 if (e.isClass()) { | 570 if (e.isClass()) { |
| 531 e.ensureResolved(system.compiler); | 571 ClassElement classElement = e; |
| 532 var type = new Dart2JsClassMirror.fromLibrary(this, e); | 572 classElement.ensureResolved(system.compiler); |
| 573 var type = new Dart2JsClassMirror.fromLibrary(this, classElement); | |
| 533 assert(invariant(_library, !_classes.containsKey(type.simpleName), | 574 assert(invariant(_library, !_classes.containsKey(type.simpleName), |
| 534 message: "Type name '${type.simpleName}' " | 575 message: "Type name '${type.simpleName}' " |
| 535 "is not unique in $_library.")); | 576 "is not unique in $_library.")); |
| 536 _classes[type.simpleName] = type; | 577 _classes[type.simpleName] = type; |
| 537 } else if (e.isTypedef()) { | 578 } else if (e.isTypedef()) { |
| 538 var type = new Dart2JsTypedefMirror.fromLibrary(this, | 579 var type = new Dart2JsTypedefMirror.fromLibrary(this, |
| 539 e.computeType(system.compiler)); | 580 e.computeType(system.compiler)); |
| 540 assert(invariant(_library, !_classes.containsKey(type.simpleName), | 581 assert(invariant(_library, !_classes.containsKey(type.simpleName), |
| 541 message: "Type name '${type.simpleName}' " | 582 message: "Type name '${type.simpleName}' " |
| 542 "is not unique in $_library.")); | 583 "is not unique in $_library.")); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 553 if (!e.isClass() && !e.isTypedef()) { | 594 if (!e.isClass() && !e.isTypedef()) { |
| 554 for (var member in _convertElementMemberToMemberMirrors(this, e)) { | 595 for (var member in _convertElementMemberToMemberMirrors(this, e)) { |
| 555 assert(!_members.containsKey(member.simpleName)); | 596 assert(!_members.containsKey(member.simpleName)); |
| 556 _members[member.simpleName] = member; | 597 _members[member.simpleName] = member; |
| 557 } | 598 } |
| 558 } | 599 } |
| 559 }); | 600 }); |
| 560 } | 601 } |
| 561 } | 602 } |
| 562 | 603 |
| 563 Map<String, MemberMirror> get declaredMembers { | |
| 564 _ensureMembers(); | |
| 565 return new ImmutableMapWrapper<String, MemberMirror>(_members); | |
| 566 } | |
| 567 | |
| 568 Map<String, Mirror> get members => declaredMembers; | |
| 569 | |
| 570 Map<String, MethodMirror> get functions { | |
| 571 _ensureMembers(); | |
| 572 return new FilteredImmutableMap(_members, | |
| 573 (MemberMirror member) => member is MethodMirror); | |
| 574 } | |
| 575 | |
| 576 Map<String, MethodMirror> get getters { | |
| 577 _ensureMembers(); | |
| 578 return new FilteredImmutableMap(_members, | |
| 579 (MemberMirror member) => member is MethodMirror && member.isGetter); | |
| 580 } | |
| 581 | |
| 582 Map<String, MethodMirror> get setters { | |
| 583 _ensureMembers(); | |
| 584 return new FilteredImmutableMap(_members, | |
| 585 (MemberMirror member) => member is MethodMirror && member.isSetter); | |
| 586 } | |
| 587 | |
| 588 Map<String, ClassMirror> get classes { | 604 Map<String, ClassMirror> get classes { |
| 589 _ensureClasses(); | 605 _ensureClasses(); |
| 590 return new ImmutableMapWrapper<String, ClassMirror>(_classes); | 606 return new ImmutableMapWrapper<String, ClassMirror>(_classes); |
| 591 } | 607 } |
| 592 | 608 |
| 593 SourceLocation get location { | 609 SourceLocation get location { |
| 594 var script = _library.getCompilationUnit().script; | 610 var script = _library.getCompilationUnit().script; |
| 595 return new Dart2JsLocation( | 611 return new Dart2JsLocation( |
| 596 script, | 612 script, |
| 597 new SourceSpan(script.uri, 0, script.text.length)); | 613 new SourceSpan(script.uri, 0, script.text.length)); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 664 } | 680 } |
| 665 return null; | 681 return null; |
| 666 } | 682 } |
| 667 bool get hasDefaultValue { | 683 bool get hasDefaultValue { |
| 668 return _variableElement.cachedNode !== null && | 684 return _variableElement.cachedNode !== null && |
| 669 _variableElement.cachedNode is SendSet; | 685 _variableElement.cachedNode is SendSet; |
| 670 } | 686 } |
| 671 | 687 |
| 672 bool get isInitializingFormal => false; | 688 bool get isInitializingFormal => false; |
| 673 | 689 |
| 674 FieldMirror get initializedField => null; | 690 VariableMirror get initializedField => null; |
| 675 } | 691 } |
| 676 | 692 |
| 677 class Dart2JsFieldParameterMirror extends Dart2JsParameterMirror { | 693 class Dart2JsFieldParameterMirror extends Dart2JsParameterMirror { |
| 678 | 694 |
| 679 Dart2JsFieldParameterMirror(Dart2JsMirrorSystem system, | 695 Dart2JsFieldParameterMirror(Dart2JsMirrorSystem system, |
| 680 MethodMirror method, | 696 MethodMirror method, |
| 681 FieldParameterElement element, | 697 FieldParameterElement element, |
| 682 bool isOptional) | 698 bool isOptional) |
| 683 : super._normal(system, method, element, isOptional); | 699 : super._normal(system, method, element, isOptional); |
| 684 | 700 |
| 685 FieldParameterElement get _fieldParameterElement => _element; | 701 FieldParameterElement get _fieldParameterElement => _element; |
| 686 | 702 |
| 687 TypeMirror get type { | 703 TypeMirror get type { |
| 688 if (_fieldParameterElement.variables.cachedNode.type !== null) { | 704 if (_fieldParameterElement.variables.cachedNode.type !== null) { |
| 689 return super.type; | 705 return super.type; |
| 690 } | 706 } |
| 691 return _convertTypeToTypeMirror(system, | 707 return _convertTypeToTypeMirror(system, |
| 692 _fieldParameterElement.fieldElement.computeType(system.compiler), | 708 _fieldParameterElement.fieldElement.computeType(system.compiler), |
| 693 system.compiler.types.dynamicType, | 709 system.compiler.types.dynamicType, |
| 694 _variableElement.variables.functionSignature); | 710 _variableElement.variables.functionSignature); |
| 695 } | 711 } |
| 696 | 712 |
| 697 bool get isInitializingFormal => true; | 713 bool get isInitializingFormal => true; |
| 698 | 714 |
| 699 FieldMirror get initializedField => new Dart2JsFieldMirror( | 715 VariableMirror get initializedField => new Dart2JsFieldMirror( |
| 700 _method.owner, _fieldParameterElement.fieldElement); | 716 _method.owner, _fieldParameterElement.fieldElement); |
| 701 } | 717 } |
| 702 | 718 |
| 703 //------------------------------------------------------------------------------ | 719 //------------------------------------------------------------------------------ |
| 704 // Declarations | 720 // Declarations |
| 705 //------------------------------------------------------------------------------ | 721 //------------------------------------------------------------------------------ |
| 706 class Dart2JsClassMirror extends Dart2JsObjectMirror | 722 class Dart2JsClassMirror extends Dart2JsObjectMirror |
| 707 implements Dart2JsTypeMirror, ClassMirror { | 723 implements Dart2JsTypeMirror, ClassMirror { |
| 708 final Dart2JsLibraryMirror library; | 724 final Dart2JsLibraryMirror library; |
| 709 Map<String, Dart2JsMemberMirror> _members; | |
| 710 List<TypeVariableMirror> _typeVariables; | 725 List<TypeVariableMirror> _typeVariables; |
| 711 | 726 |
| 712 Dart2JsClassMirror(Dart2JsMirrorSystem system, ClassElement _class) | 727 Dart2JsClassMirror(Dart2JsMirrorSystem system, ClassElement _class) |
| 713 : this.library = system.getLibrary(_class.getLibrary()), | 728 : this.library = system.getLibrary(_class.getLibrary()), |
| 714 super(system, _class); | 729 super(system, _class); |
| 715 | 730 |
| 716 ClassElement get _class => _element; | 731 ClassElement get _class => _element; |
| 717 | 732 |
| 718 Dart2JsClassMirror.fromLibrary(Dart2JsLibraryMirror library, | 733 Dart2JsClassMirror.fromLibrary(Dart2JsLibraryMirror library, |
| 719 ClassElement _class) | 734 ClassElement _class) |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 741 _members = <String, Dart2JsMemberMirror>{}; | 756 _members = <String, Dart2JsMemberMirror>{}; |
| 742 _class.forEachMember((_, e) { | 757 _class.forEachMember((_, e) { |
| 743 for (var member in _convertElementMemberToMemberMirrors(this, e)) { | 758 for (var member in _convertElementMemberToMemberMirrors(this, e)) { |
| 744 assert(!_members.containsKey(member.simpleName)); | 759 assert(!_members.containsKey(member.simpleName)); |
| 745 _members[member.simpleName] = member; | 760 _members[member.simpleName] = member; |
| 746 } | 761 } |
| 747 }); | 762 }); |
| 748 } | 763 } |
| 749 } | 764 } |
| 750 | 765 |
| 751 Map<String, MemberMirror> get declaredMembers { | 766 Map<String, MethodMirror> get methods => functions; |
| 767 | |
| 768 Map<String, MethodMirror> get constructors { | |
| 752 _ensureMembers(); | 769 _ensureMembers(); |
| 753 return new ImmutableMapWrapper<String, MemberMirror>(_members); | 770 return new AsFilteredImmutableMap<String, MemberMirror, MethodMirror>( |
| 754 } | 771 _members, (m) => m.isConstructor ? m : null); |
| 755 | |
| 756 Map<String, Mirror> get members => declaredMembers; | |
| 757 | |
| 758 Map<String, MethodMirror> get methods { | |
| 759 _ensureMembers(); | |
| 760 return new FilteredImmutableMap(_members, | |
| 761 (MemberMirror member) => member is MethodMirror); | |
| 762 } | |
| 763 | |
| 764 Map<String, MethodMirror> get getters { | |
| 765 _ensureMembers(); | |
| 766 return new FilteredImmutableMap(_members, | |
| 767 (MemberMirror member) => member is MethodMirror && member.isGetter); | |
| 768 } | |
| 769 | |
| 770 Map<String, MethodMirror> get setters { | |
| 771 _ensureMembers(); | |
| 772 return new FilteredImmutableMap(_members, | |
| 773 (MemberMirror member) => member is MethodMirror && member.isSetter); | |
| 774 } | 772 } |
| 775 | 773 |
| 776 bool get isObject => _class == system.compiler.objectClass; | 774 bool get isObject => _class == system.compiler.objectClass; |
| 777 | 775 |
| 778 bool get isDynamic => false; | 776 bool get isDynamic => false; |
| 779 | 777 |
| 780 bool get isVoid => false; | 778 bool get isVoid => false; |
| 781 | 779 |
| 782 bool get isTypeVariable => false; | 780 bool get isTypeVariable => false; |
| 783 | 781 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 824 _typeVariables = <TypeVariableMirror>[]; | 822 _typeVariables = <TypeVariableMirror>[]; |
| 825 _class.ensureResolved(system.compiler); | 823 _class.ensureResolved(system.compiler); |
| 826 for (TypeVariableType typeVariable in _class.typeVariables) { | 824 for (TypeVariableType typeVariable in _class.typeVariables) { |
| 827 _typeVariables.add( | 825 _typeVariables.add( |
| 828 new Dart2JsTypeVariableMirror(system, typeVariable)); | 826 new Dart2JsTypeVariableMirror(system, typeVariable)); |
| 829 } | 827 } |
| 830 } | 828 } |
| 831 return _typeVariables; | 829 return _typeVariables; |
| 832 } | 830 } |
| 833 | 831 |
| 834 Map<String, MethodMirror> get constructors { | |
| 835 _ensureMembers(); | |
| 836 return new AsFilteredImmutableMap<String, MemberMirror, MethodMirror>( | |
| 837 _members, (m) => m.isConstructor ? m : null); | |
| 838 } | |
| 839 | |
| 840 /** | 832 /** |
| 841 * Returns the default type for this interface. | 833 * Returns the default type for this interface. |
| 842 */ | 834 */ |
| 843 ClassMirror get defaultFactory { | 835 ClassMirror get defaultFactory { |
| 844 if (_class.defaultClass != null) { | 836 if (_class.defaultClass != null) { |
| 845 return new Dart2JsInterfaceTypeMirror(system, _class.defaultClass); | 837 return new Dart2JsInterfaceTypeMirror(system, _class.defaultClass); |
| 846 } | 838 } |
| 847 return null; | 839 return null; |
| 848 } | 840 } |
| 849 | 841 |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1040 Map<String, MemberMirror> get members => const <String, MemberMirror>{}; | 1032 Map<String, MemberMirror> get members => const <String, MemberMirror>{}; |
| 1041 | 1033 |
| 1042 Map<String, MethodMirror> get constructors => const <String, MethodMirror>{}; | 1034 Map<String, MethodMirror> get constructors => const <String, MethodMirror>{}; |
| 1043 | 1035 |
| 1044 Map<String, MethodMirror> get methods => const <String, MethodMirror>{}; | 1036 Map<String, MethodMirror> get methods => const <String, MethodMirror>{}; |
| 1045 | 1037 |
| 1046 Map<String, MethodMirror> get getters => const <String, MethodMirror>{}; | 1038 Map<String, MethodMirror> get getters => const <String, MethodMirror>{}; |
| 1047 | 1039 |
| 1048 Map<String, MethodMirror> get setters => const <String, MethodMirror>{}; | 1040 Map<String, MethodMirror> get setters => const <String, MethodMirror>{}; |
| 1049 | 1041 |
| 1042 Map<String, VariableMirror> get variables => const <String, VariableMirror>{}; | |
| 1043 | |
| 1050 ClassMirror get defaultFactory => null; | 1044 ClassMirror get defaultFactory => null; |
| 1051 } | 1045 } |
| 1052 | 1046 |
| 1053 class Dart2JsInterfaceTypeMirror extends Dart2JsTypeElementMirror | 1047 class Dart2JsInterfaceTypeMirror extends Dart2JsTypeElementMirror |
| 1054 implements ClassMirror { | 1048 implements ClassMirror { |
| 1055 List<TypeMirror> _typeArguments; | 1049 List<TypeMirror> _typeArguments; |
| 1056 | 1050 |
| 1057 Dart2JsInterfaceTypeMirror(Dart2JsMirrorSystem system, | 1051 Dart2JsInterfaceTypeMirror(Dart2JsMirrorSystem system, |
| 1058 InterfaceType interfaceType) | 1052 InterfaceType interfaceType) |
| 1059 : super(system, interfaceType); | 1053 : super(system, interfaceType); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1114 | 1108 |
| 1115 // TODO(johnniwinther): Substitute type arguments for type variables. | 1109 // TODO(johnniwinther): Substitute type arguments for type variables. |
| 1116 Map<String, MethodMirror> get methods => originalDeclaration.methods; | 1110 Map<String, MethodMirror> get methods => originalDeclaration.methods; |
| 1117 | 1111 |
| 1118 // TODO(johnniwinther): Substitute type arguments for type variables. | 1112 // TODO(johnniwinther): Substitute type arguments for type variables. |
| 1119 Map<String, MethodMirror> get setters => originalDeclaration.setters; | 1113 Map<String, MethodMirror> get setters => originalDeclaration.setters; |
| 1120 | 1114 |
| 1121 // TODO(johnniwinther): Substitute type arguments for type variables. | 1115 // TODO(johnniwinther): Substitute type arguments for type variables. |
| 1122 Map<String, MethodMirror> get getters => originalDeclaration.getters; | 1116 Map<String, MethodMirror> get getters => originalDeclaration.getters; |
| 1123 | 1117 |
| 1118 // TODO(johnniwinther): Substitute type arguments for type variables. | |
| 1119 Map<String, VariableMirror> get variables => originalDeclaration.variables; | |
| 1120 | |
| 1124 // TODO(johnniwinther): Substitute type arguments for type variables? | 1121 // TODO(johnniwinther): Substitute type arguments for type variables? |
| 1125 ClassMirror get defaultFactory => originalDeclaration.defaultFactory; | 1122 ClassMirror get defaultFactory => originalDeclaration.defaultFactory; |
| 1126 | 1123 |
| 1127 bool operator ==(Object other) { | 1124 bool operator ==(Object other) { |
| 1128 if (this === other) { | 1125 if (this === other) { |
| 1129 return true; | 1126 return true; |
| 1130 } | 1127 } |
| 1131 if (other is! ClassMirror) { | 1128 if (other is! ClassMirror) { |
| 1132 return false; | 1129 return false; |
| 1133 } | 1130 } |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1418 var script = _function.getCompilationUnit().script; | 1415 var script = _function.getCompilationUnit().script; |
| 1419 var span = system.compiler.spanFromNode(node, script.uri); | 1416 var span = system.compiler.spanFromNode(node, script.uri); |
| 1420 return new Dart2JsLocation(script, span); | 1417 return new Dart2JsLocation(script, span); |
| 1421 } | 1418 } |
| 1422 return super.location; | 1419 return super.location; |
| 1423 } | 1420 } |
| 1424 | 1421 |
| 1425 } | 1422 } |
| 1426 | 1423 |
| 1427 class Dart2JsFieldMirror extends Dart2JsElementMirror | 1424 class Dart2JsFieldMirror extends Dart2JsElementMirror |
| 1428 implements Dart2JsMemberMirror, FieldMirror { | 1425 implements Dart2JsMemberMirror, VariableMirror { |
| 1429 Dart2JsObjectMirror _objectMirror; | 1426 Dart2JsObjectMirror _objectMirror; |
| 1430 VariableElement _variable; | 1427 VariableElement _variable; |
| 1431 | 1428 |
| 1432 Dart2JsFieldMirror(Dart2JsObjectMirror objectMirror, | 1429 Dart2JsFieldMirror(Dart2JsObjectMirror objectMirror, |
| 1433 VariableElement variable) | 1430 VariableElement variable) |
| 1434 : this._objectMirror = objectMirror, | 1431 : this._objectMirror = objectMirror, |
| 1435 this._variable = variable, | 1432 this._variable = variable, |
| 1436 super(objectMirror.system, variable); | 1433 super(objectMirror.system, variable); |
| 1437 | 1434 |
| 1438 String get qualifiedName | 1435 String get qualifiedName |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 1464 if (node !== null) { | 1461 if (node !== null) { |
| 1465 var span = system.compiler.spanFromNode(node, script.uri); | 1462 var span = system.compiler.spanFromNode(node, script.uri); |
| 1466 return new Dart2JsLocation(script, span); | 1463 return new Dart2JsLocation(script, span); |
| 1467 } else { | 1464 } else { |
| 1468 var span = system.compiler.spanFromElement(_variable); | 1465 var span = system.compiler.spanFromElement(_variable); |
| 1469 return new Dart2JsLocation(script, span); | 1466 return new Dart2JsLocation(script, span); |
| 1470 } | 1467 } |
| 1471 } | 1468 } |
| 1472 } | 1469 } |
| 1473 | 1470 |
| OLD | NEW |