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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart

Issue 11729004: Refactor location computation in dart2js mirrors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Location test added. Created 7 years, 11 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) 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 '../../compiler.dart' as diagnostics; 10 import '../../compiler.dart' as diagnostics;
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 426
427 427
428 //------------------------------------------------------------------------------ 428 //------------------------------------------------------------------------------
429 // Dart2Js specific extensions of mirror interfaces 429 // Dart2Js specific extensions of mirror interfaces
430 //------------------------------------------------------------------------------ 430 //------------------------------------------------------------------------------
431 431
432 abstract class Dart2JsMirror implements Mirror { 432 abstract class Dart2JsMirror implements Mirror {
433 Dart2JsMirrorSystem get mirrors; 433 Dart2JsMirrorSystem get mirrors;
434 } 434 }
435 435
436 abstract class Dart2JsDeclarationMirror 436 abstract class Dart2JsDeclarationMirror extends Dart2JsMirror
437 implements Dart2JsMirror, DeclarationMirror { 437 implements DeclarationMirror {
438 438
439 bool get isTopLevel => owner != null && owner is LibraryMirror; 439 bool get isTopLevel => owner != null && owner is LibraryMirror;
440 440
441 bool get isPrivate => _isPrivate(simpleName); 441 bool get isPrivate => _isPrivate(simpleName);
442
443 /**
444 * Returns the first token for the source of this declaration.
445 */
446 Token getBeginToken();
447
448 /**
449 * Returns the last token for the source of this declaration.
450 */
451 Token getEndToken();
452
453 /**
454 * Returns the script for the source of this declaration.
455 */
456 Script getScript();
457
458 SourceLocation get location {
459 Token beginToken = getBeginToken();
460 Script script = getScript();
461 SourceSpan span;
462 if (beginToken == null) {
463 span = new SourceSpan(script.uri, 0, 0);
464 } else {
465 Token endToken = getEndToken();
466 span = mirrors.compiler.spanFromTokens(beginToken, endToken, script.uri);
467 }
468 return new Dart2JsSourceLocation(script, span);
469 }
442 } 470 }
443 471
444 abstract class Dart2JsMemberMirror extends Dart2JsElementMirror 472 abstract class Dart2JsMemberMirror extends Dart2JsElementMirror
445 implements MemberMirror { 473 implements MemberMirror {
446 474
447 Dart2JsMemberMirror(Dart2JsMirrorSystem system, Element element) 475 Dart2JsMemberMirror(Dart2JsMirrorSystem system, Element element)
448 : super(system, element); 476 : super(system, element);
449 477
450 bool get isConstructor => false; 478 bool get isConstructor => false;
451 479
(...skipping 18 matching lines...) Expand all
470 498
471 Dart2JsElementMirror(this.mirrors, this._element) { 499 Dart2JsElementMirror(this.mirrors, this._element) {
472 assert (mirrors != null); 500 assert (mirrors != null);
473 assert (_element != null); 501 assert (_element != null);
474 } 502 }
475 503
476 String get simpleName => _element.name.slowToString(); 504 String get simpleName => _element.name.slowToString();
477 505
478 String get displayName => simpleName; 506 String get displayName => simpleName;
479 507
480 SourceLocation get location => new Dart2JsSourceLocation( 508 /**
481 _element.getCompilationUnit().script, 509 * Computes the first token for this declaration using the first metadata
482 mirrors.compiler.spanFromElement(_element)); 510 * annotation, the begin token of the element node or element position as
511 * indicator.
512 */
513 Token getBeginToken() {
514 if (!_element.metadata.isEmpty) {
515 for (MetadataAnnotation metadata in _element.metadata) {
516 if (metadata.beginToken != null) {
517 return metadata.beginToken;
518 }
519 }
520 }
521 // TODO(johnniwinther): Avoid calling [parseNode].
522 Node node = _element.parseNode(mirrors.compiler);
523 if (node == null) {
524 return _element.position();
525 }
526 return node.getBeginToken();
527 }
528
529 /**
530 * Computes the last token for this declaration using the end token of the
531 * element node or element position as indicator.
532 */
533 Token getEndToken() {
534 // TODO(johnniwinther): Avoid calling [parseNode].
535 Node node = _element.parseNode(mirrors.compiler);
536 if (node == null) {
537 return _element.position();
538 }
539 return node.getEndToken();
540 }
541
542 Script getScript() => _element.getCompilationUnit().script;
483 543
484 String toString() => _element.toString(); 544 String toString() => _element.toString();
485 545
486 int get hashCode => qualifiedName.hashCode; 546 int get hashCode => qualifiedName.hashCode;
487 547
488 List<InstanceMirror> get metadata { 548 List<InstanceMirror> get metadata {
489 if (_metadata == null) { 549 if (_metadata == null) {
490 _metadata = <InstanceMirror>[]; 550 _metadata = <InstanceMirror>[];
491 for (MetadataAnnotation metadata in _element.metadata) { 551 for (MetadataAnnotation metadata in _element.metadata) {
492 metadata.ensureResolved(mirrors.compiler); 552 metadata.ensureResolved(mirrors.compiler);
493 _metadata.add( 553 _metadata.add(
494 _convertConstantToInstanceMirror(mirrors, metadata.value)); 554 _convertConstantToInstanceMirror(mirrors, metadata.value));
495 } 555 }
496 } 556 }
497 // TODO(johnniwinther): Return an unmodifiable list instead. 557 // TODO(johnniwinther): Return an unmodifiable list instead.
498 return new List<InstanceMirror>.from(_metadata); 558 return new List<InstanceMirror>.from(_metadata);
499 } 559 }
500 } 560 }
501 561
502 abstract class Dart2JsProxyMirror extends Dart2JsDeclarationMirror {
503 final Dart2JsMirrorSystem mirrors;
504
505 Dart2JsProxyMirror(this.mirrors);
506
507 String get displayName => simpleName;
508
509 int get hashCode => qualifiedName.hashCode;
510 }
511
512 //------------------------------------------------------------------------------ 562 //------------------------------------------------------------------------------
513 // Mirror system implementation. 563 // Mirror system implementation.
514 //------------------------------------------------------------------------------ 564 //------------------------------------------------------------------------------
515 565
516 class Dart2JsMirrorSystem implements MirrorSystem, Dart2JsMirror { 566 class Dart2JsMirrorSystem implements MirrorSystem {
517 final api.Compiler compiler; 567 final api.Compiler compiler;
518 Map<String, Dart2JsLibraryMirror> _libraries; 568 Map<String, Dart2JsLibraryMirror> _libraries;
519 Map<LibraryElement, Dart2JsLibraryMirror> _libraryMap; 569 Map<LibraryElement, Dart2JsLibraryMirror> _libraryMap;
520 570
521 Dart2JsMirrorSystem(this.compiler) 571 Dart2JsMirrorSystem(this.compiler)
522 : _libraryMap = new Map<LibraryElement, Dart2JsLibraryMirror>(); 572 : _libraryMap = new Map<LibraryElement, Dart2JsLibraryMirror>();
523 573
524 void _ensureLibraries() { 574 void _ensureLibraries() {
525 if (_libraries == null) { 575 if (_libraries == null) {
526 _libraries = <String, Dart2JsLibraryMirror>{}; 576 _libraries = <String, Dart2JsLibraryMirror>{};
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 } 722 }
673 }); 723 });
674 } 724 }
675 } 725 }
676 726
677 Map<String, ClassMirror> get classes { 727 Map<String, ClassMirror> get classes {
678 _ensureClasses(); 728 _ensureClasses();
679 return new ImmutableMapWrapper<String, ClassMirror>(_classes); 729 return new ImmutableMapWrapper<String, ClassMirror>(_classes);
680 } 730 }
681 731
682 SourceLocation get location { 732 /**
683 var script = _library.getCompilationUnit().script; 733 * Computes the first token of this library using the first metadata
684 SourceSpan span; 734 * annotation or the first library tag as indicator.
735 */
736 Token getBeginToken() {
737 if (!_element.metadata.isEmpty) {
738 for (MetadataAnnotation metadata in _element.metadata) {
739 if (metadata.beginToken != null) {
740 return metadata.beginToken;
741 }
742 }
743 }
685 if (_library.libraryTag != null) { 744 if (_library.libraryTag != null) {
686 span = mirrors.compiler.spanFromNode(_library.libraryTag, script.uri); 745 return _library.libraryTag.getBeginToken();
687 } else { 746 } else if (!_library.tags.isEmpty) {
688 span = new SourceSpan(script.uri, 0, 0); 747 return _library.tags.reverse().head.getBeginToken();
689 } 748 }
690 return new Dart2JsSourceLocation(script, span); 749 return null;
750 }
751
752 /**
753 * Computes the first token of this library using the last library tag as
754 * indicator.
755 */
756 Token getEndToken() {
757 if (!_library.tags.isEmpty) {
758 return _library.tags.head.getEndToken();
759 }
760 return null;
691 } 761 }
692 } 762 }
693 763
694 class Dart2JsSourceLocation implements SourceLocation { 764 class Dart2JsSourceLocation implements SourceLocation {
695 final Script _script; 765 final Script _script;
696 final SourceSpan _span; 766 final SourceSpan _span;
697 int _line; 767 int _line;
698 int _column; 768 int _column;
699 769
700 Dart2JsSourceLocation(this._script, this._span); 770 Dart2JsSourceLocation(this._script, this._span);
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 932
863 Dart2JsClassMirror.fromLibrary(Dart2JsLibraryMirror library, 933 Dart2JsClassMirror.fromLibrary(Dart2JsLibraryMirror library,
864 ClassElement _class) 934 ClassElement _class)
865 : this.library = library, 935 : this.library = library,
866 super(library.mirrors, _class); 936 super(library.mirrors, _class);
867 937
868 DeclarationMirror get owner => library; 938 DeclarationMirror get owner => library;
869 939
870 String get qualifiedName => '${library.qualifiedName}.${simpleName}'; 940 String get qualifiedName => '${library.qualifiedName}.${simpleName}';
871 941
872 SourceLocation get location {
873 if (_class is PartialClassElement) {
874 var node = _class.parseNode(mirrors.compiler);
875 if (node != null) {
876 var script = _class.getCompilationUnit().script;
877 var span = mirrors.compiler.spanFromNode(node, script.uri);
878 return new Dart2JsSourceLocation(script, span);
879 }
880 }
881 return super.location;
882 }
883
884 void _ensureMembers() { 942 void _ensureMembers() {
885 if (_members == null) { 943 if (_members == null) {
886 _members = <String, Dart2JsMemberMirror>{}; 944 _members = <String, Dart2JsMemberMirror>{};
887 _class.forEachMember((_, e) { 945 _class.forEachMember((_, e) {
888 for (var member in _convertElementMemberToMemberMirrors(this, e)) { 946 for (var member in _convertElementMemberToMemberMirrors(this, e)) {
889 assert(!_members.containsKey(member.simpleName)); 947 assert(!_members.containsKey(member.simpleName));
890 _members[member.simpleName] = member; 948 _members[member.simpleName] = member;
891 } 949 }
892 }); 950 });
893 } 951 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 1056
999 Dart2JsTypedefMirror.fromLibrary(Dart2JsLibraryMirror library, 1057 Dart2JsTypedefMirror.fromLibrary(Dart2JsLibraryMirror library,
1000 TypedefType _typedef) 1058 TypedefType _typedef)
1001 : this._library = library, 1059 : this._library = library,
1002 super(library.mirrors, _typedef); 1060 super(library.mirrors, _typedef);
1003 1061
1004 TypedefType get _typedef => _type; 1062 TypedefType get _typedef => _type;
1005 1063
1006 String get qualifiedName => '${library.qualifiedName}.${simpleName}'; 1064 String get qualifiedName => '${library.qualifiedName}.${simpleName}';
1007 1065
1008 SourceLocation get location {
1009 var node = _typedef.element.parseNode(_diagnosticListener);
1010 if (node != null) {
1011 var script = _typedef.element.getCompilationUnit().script;
1012 var span = mirrors.compiler.spanFromNode(node, script.uri);
1013 return new Dart2JsSourceLocation(script, span);
1014 }
1015 return super.location;
1016 }
1017
1018 LibraryMirror get library => _library; 1066 LibraryMirror get library => _library;
1019 1067
1020 bool get isTypedef => true; 1068 bool get isTypedef => true;
1021 1069
1022 List<TypeMirror> get typeArguments { 1070 List<TypeMirror> get typeArguments {
1023 throw new UnsupportedError( 1071 throw new UnsupportedError(
1024 'Declarations do not have type arguments'); 1072 'Declarations do not have type arguments');
1025 } 1073 }
1026 1074
1027 List<TypeVariableMirror> get typeVariables { 1075 List<TypeVariableMirror> get typeVariables {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1116 } 1164 }
1117 return qualifiedName == other.qualifiedName; 1165 return qualifiedName == other.qualifiedName;
1118 } 1166 }
1119 } 1167 }
1120 1168
1121 1169
1122 //------------------------------------------------------------------------------ 1170 //------------------------------------------------------------------------------
1123 // Types 1171 // Types
1124 //------------------------------------------------------------------------------ 1172 //------------------------------------------------------------------------------
1125 1173
1126 abstract class Dart2JsTypeElementMirror extends Dart2JsProxyMirror 1174 abstract class Dart2JsTypeElementMirror extends Dart2JsElementMirror
1127 implements Dart2JsTypeMirror { 1175 implements Dart2JsTypeMirror {
1128 final DartType _type; 1176 final DartType _type;
1129 List<InstanceMirror> _metadata;
1130 1177
1131 Dart2JsTypeElementMirror(Dart2JsMirrorSystem system, this._type) 1178 Dart2JsTypeElementMirror(Dart2JsMirrorSystem system, DartType type)
1132 : super(system); 1179 : super(system, type.element),
1180 this._type = type;
1133 1181
1134 String get simpleName => _type.name.slowToString(); 1182 String get simpleName => _type.name.slowToString();
1135 1183
1136 SourceLocation get location {
1137 var script = _type.element.getCompilationUnit().script;
1138 return new Dart2JsSourceLocation(script,
1139 mirrors.compiler.spanFromElement(_type.element));
1140 }
1141
1142 DeclarationMirror get owner => library; 1184 DeclarationMirror get owner => library;
1143 1185
1144 LibraryMirror get library { 1186 LibraryMirror get library {
1145 return mirrors._getLibrary(_type.element.getLibrary()); 1187 return mirrors._getLibrary(_type.element.getLibrary());
1146 } 1188 }
1147 1189
1148 bool get isObject => false; 1190 bool get isObject => false;
1149 1191
1150 bool get isVoid => false; 1192 bool get isVoid => false;
1151 1193
1152 bool get isDynamic => false; 1194 bool get isDynamic => false;
1153 1195
1154 bool get isTypeVariable => false; 1196 bool get isTypeVariable => false;
1155 1197
1156 bool get isTypedef => false; 1198 bool get isTypedef => false;
1157 1199
1158 bool get isFunction => false; 1200 bool get isFunction => false;
1159 1201
1160 String toString() => _type.element.toString(); 1202 String toString() => _type.toString();
1161 1203
1162 Map<String, MemberMirror> get members => const <String, MemberMirror>{}; 1204 Map<String, MemberMirror> get members => const <String, MemberMirror>{};
1163 1205
1164 Map<String, MethodMirror> get constructors => const <String, MethodMirror>{}; 1206 Map<String, MethodMirror> get constructors => const <String, MethodMirror>{};
1165 1207
1166 Map<String, MethodMirror> get methods => const <String, MethodMirror>{}; 1208 Map<String, MethodMirror> get methods => const <String, MethodMirror>{};
1167 1209
1168 Map<String, MethodMirror> get getters => const <String, MethodMirror>{}; 1210 Map<String, MethodMirror> get getters => const <String, MethodMirror>{};
1169 1211
1170 Map<String, MethodMirror> get setters => const <String, MethodMirror>{}; 1212 Map<String, MethodMirror> get setters => const <String, MethodMirror>{};
1171 1213
1172 Map<String, VariableMirror> get variables => const <String, VariableMirror>{}; 1214 Map<String, VariableMirror> get variables => const <String, VariableMirror>{};
1173 1215
1174 ClassMirror get defaultFactory => null; 1216 ClassMirror get defaultFactory => null;
1175
1176 // TODO(johnniwinther): Should a type show the metadata of its declaration?
1177 List<InstanceMirror> get metadata {
1178 if (_metadata == null) {
1179 var _metadata = <InstanceMirror>[];
1180 for (MetadataAnnotation metadata in _type.element.metadata) {
1181 metadata.ensureResolved(mirrors.compiler);
1182 _metadata.add(
1183 _convertConstantToInstanceMirror(mirrors, metadata.value));
1184 }
1185 }
1186 // TODO(johnniwinther): Return an unmodifiable list instead.
1187 return new List<InstanceMirror>.from(_metadata);
1188 }
1189 } 1217 }
1190 1218
1191 class Dart2JsInterfaceTypeMirror extends Dart2JsTypeElementMirror 1219 class Dart2JsInterfaceTypeMirror extends Dart2JsTypeElementMirror
1192 implements ClassMirror { 1220 implements ClassMirror {
1193 List<TypeMirror> _typeArguments; 1221 List<TypeMirror> _typeArguments;
1194 1222
1195 Dart2JsInterfaceTypeMirror(Dart2JsMirrorSystem system, 1223 Dart2JsInterfaceTypeMirror(Dart2JsMirrorSystem system,
1196 InterfaceType interfaceType) 1224 InterfaceType interfaceType)
1197 : super(system, interfaceType); 1225 : super(system, interfaceType);
1198 1226
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 1587
1560 bool get isRedirectingConstructor => _kind == Dart2JsMethodKind.REDIRECTING; 1588 bool get isRedirectingConstructor => _kind == Dart2JsMethodKind.REDIRECTING;
1561 1589
1562 bool get isFactoryConstructor => _kind == Dart2JsMethodKind.FACTORY; 1590 bool get isFactoryConstructor => _kind == Dart2JsMethodKind.FACTORY;
1563 1591
1564 bool get isGetter => _kind == Dart2JsMethodKind.GETTER; 1592 bool get isGetter => _kind == Dart2JsMethodKind.GETTER;
1565 1593
1566 bool get isSetter => _kind == Dart2JsMethodKind.SETTER; 1594 bool get isSetter => _kind == Dart2JsMethodKind.SETTER;
1567 1595
1568 bool get isOperator => _kind == Dart2JsMethodKind.OPERATOR; 1596 bool get isOperator => _kind == Dart2JsMethodKind.OPERATOR;
1569
1570 SourceLocation get location {
1571 var node = _function.parseNode(_diagnosticListener);
1572 if (node != null) {
1573 var script = _function.getCompilationUnit().script;
1574 var span = mirrors.compiler.spanFromNode(node, script.uri);
1575 return new Dart2JsSourceLocation(script, span);
1576 }
1577 return super.location;
1578 }
1579
1580 } 1597 }
1581 1598
1582 class Dart2JsFieldMirror extends Dart2JsMemberMirror implements VariableMirror { 1599 class Dart2JsFieldMirror extends Dart2JsMemberMirror implements VariableMirror {
1583 Dart2JsContainerMirror _objectMirror; 1600 Dart2JsContainerMirror _objectMirror;
1584 VariableElement _variable; 1601 VariableElement _variable;
1585 1602
1586 Dart2JsFieldMirror(Dart2JsContainerMirror objectMirror, 1603 Dart2JsFieldMirror(Dart2JsContainerMirror objectMirror,
1587 VariableElement variable) 1604 VariableElement variable)
1588 : this._objectMirror = objectMirror, 1605 : this._objectMirror = objectMirror,
1589 this._variable = variable, 1606 this._variable = variable,
(...skipping 10 matching lines...) Expand all
1600 1617
1601 bool get isStatic => _variable.modifiers.isStatic(); 1618 bool get isStatic => _variable.modifiers.isStatic();
1602 1619
1603 bool get isFinal => _variable.modifiers.isFinal(); 1620 bool get isFinal => _variable.modifiers.isFinal();
1604 1621
1605 bool get isConst => _variable.modifiers.isConst(); 1622 bool get isConst => _variable.modifiers.isConst();
1606 1623
1607 TypeMirror get type => _convertTypeToTypeMirror(mirrors, 1624 TypeMirror get type => _convertTypeToTypeMirror(mirrors,
1608 _variable.computeType(mirrors.compiler), 1625 _variable.computeType(mirrors.compiler),
1609 mirrors.compiler.types.dynamicType); 1626 mirrors.compiler.types.dynamicType);
1610
1611 SourceLocation get location {
1612 var script = _variable.getCompilationUnit().script;
1613 var node = _variable.variables.parseNode(_diagnosticListener);
1614 if (node != null) {
1615 var span = mirrors.compiler.spanFromNode(node, script.uri);
1616 return new Dart2JsSourceLocation(script, span);
1617 } else {
1618 var span = mirrors.compiler.spanFromElement(_variable);
1619 return new Dart2JsSourceLocation(script, span);
1620 }
1621 }
1622 } 1627 }
1623 1628
1624 //////////////////////////////////////////////////////////////////////////////// 1629 ////////////////////////////////////////////////////////////////////////////////
1625 // Mirrors on constant values used for metadata. 1630 // Mirrors on constant values used for metadata.
1626 //////////////////////////////////////////////////////////////////////////////// 1631 ////////////////////////////////////////////////////////////////////////////////
1627 1632
1628 class Dart2JsConstantMirror extends InstanceMirror { 1633 class Dart2JsConstantMirror extends InstanceMirror {
1629 final Dart2JsMirrorSystem mirrors; 1634 final Dart2JsMirrorSystem mirrors;
1630 final Constant _constant; 1635 final Constant _constant;
1631 1636
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1705 1710
1706 int get length => _constant.length; 1711 int get length => _constant.length;
1707 1712
1708 Future<InstanceMirror> operator[](int index) { 1713 Future<InstanceMirror> operator[](int index) {
1709 if (index < 0) throw new RangeError('Negative index'); 1714 if (index < 0) throw new RangeError('Negative index');
1710 if (index >= _constant.length) throw new RangeError('Index out of bounds'); 1715 if (index >= _constant.length) throw new RangeError('Index out of bounds');
1711 return new Future<InstanceMirror>.immediate( 1716 return new Future<InstanceMirror>.immediate(
1712 _convertConstantToInstanceMirror(mirrors, _constant.entries[index])); 1717 _convertConstantToInstanceMirror(mirrors, _constant.entries[index]));
1713 } 1718 }
1714 } 1719 }
1715 1720
Johnni Winther 2013/01/04 09:57:56 The changes below are from https://codereview.chro
1716 class Dart2JsMapConstantMirror extends Dart2JsConstantMirror 1721 class Dart2JsMapConstantMirror extends Dart2JsConstantMirror
1717 implements MapInstanceMirror { 1722 implements MapInstanceMirror {
1718 List<String> _listCache; 1723 List<String> _listCache;
1719 1724
1720 Dart2JsMapConstantMirror(Dart2JsMirrorSystem mirrors, 1725 Dart2JsMapConstantMirror(Dart2JsMirrorSystem mirrors,
1721 MapConstant constant) 1726 MapConstant constant)
1722 : super(mirrors, constant); 1727 : super(mirrors, constant);
1723 1728
1724 MapConstant get _constant => super._constant; 1729 MapConstant get _constant => super._constant;
1725 1730
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 1795
1791 Future<InstanceMirror> getField(String fieldName) { 1796 Future<InstanceMirror> getField(String fieldName) {
1792 Constant fieldConstant = _fieldMap[fieldName]; 1797 Constant fieldConstant = _fieldMap[fieldName];
1793 if (fieldConstant != null) { 1798 if (fieldConstant != null) {
1794 return new Future<InstanceMirror>.immediate( 1799 return new Future<InstanceMirror>.immediate(
1795 _convertConstantToInstanceMirror(mirrors, fieldConstant)); 1800 _convertConstantToInstanceMirror(mirrors, fieldConstant));
1796 } 1801 }
1797 return super.getField(fieldName); 1802 return super.getField(fieldName);
1798 } 1803 }
1799 } 1804 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698