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

Side by Side Diff: pkg/compiler/lib/src/resolution/class_members.dart

Issue 2905463003: Use failedAt in more places (Closed)
Patch Set: Created 3 years, 7 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
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 dart2js.resolution.compute_members; 5 library dart2js.resolution.compute_members;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/names.dart' show Identifiers, Names; 8 import '../common/names.dart' show Identifiers, Names;
9 import '../common/resolution.dart' show Resolution; 9 import '../common/resolution.dart' show Resolution;
10 import '../elements/resolution_types.dart'; 10 import '../elements/resolution_types.dart';
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 /// members with these names. 590 /// members with these names.
591 Map<Name, Setlet<Member>> computeSuperMembers( 591 Map<Name, Setlet<Member>> computeSuperMembers(
592 String name, Setlet<Name> names) { 592 String name, Setlet<Name> names) {
593 computeSuperClassMembers(name, names); 593 computeSuperClassMembers(name, names);
594 return computeSuperInterfaceMembers(name, names); 594 return computeSuperInterfaceMembers(name, names);
595 } 595 }
596 596
597 Map<Name, Setlet<Member>> computeSuperInterfaceMembers( 597 Map<Name, Setlet<Member>> computeSuperInterfaceMembers(
598 String name, Setlet<Name> names) { 598 String name, Setlet<Name> names) {
599 ResolutionInterfaceType supertype = cls.supertype; 599 ResolutionInterfaceType supertype = cls.supertype;
600 assert(invariant(cls, supertype != null, 600 assert(supertype != null,
601 message: "Interface members computed for $cls.")); 601 failedAt(cls, "Interface members computed for $cls."));
602 ClassElement superclass = supertype.element; 602 ClassElement superclass = supertype.element;
603 603
604 Map<Name, Setlet<Member>> inheritedInterfaceMembers = 604 Map<Name, Setlet<Member>> inheritedInterfaceMembers =
605 new Map<Name, Setlet<Member>>(); 605 new Map<Name, Setlet<Member>>();
606 606
607 void inheritInterfaceMember( 607 void inheritInterfaceMember(
608 ResolutionInterfaceType supertype, MemberSignature member) { 608 ResolutionInterfaceType supertype, MemberSignature member) {
609 if (shouldSkipMember(member)) return; 609 if (shouldSkipMember(member)) return;
610 Setlet<Member> members = inheritedInterfaceMembers.putIfAbsent( 610 Setlet<Member> members = inheritedInterfaceMembers.putIfAbsent(
611 member.name, () => new Setlet<Member>()); 611 member.name, () => new Setlet<Member>());
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 DiagnosticMessage warning = reporter.createMessage( 714 DiagnosticMessage warning = reporter.createMessage(
715 cls, 715 cls,
716 MessageKind.INHERIT_GETTER_AND_METHOD, 716 MessageKind.INHERIT_GETTER_AND_METHOD,
717 {'class': thisType, 'name': name.text}); 717 {'class': thisType, 'name': name.text});
718 List<DiagnosticMessage> infos = <DiagnosticMessage>[]; 718 List<DiagnosticMessage> infos = <DiagnosticMessage>[];
719 for (Member inherited in inheritedMembers) { 719 for (Member inherited in inheritedMembers) {
720 MessageKind kind; 720 MessageKind kind;
721 if (inherited.isMethod) { 721 if (inherited.isMethod) {
722 kind = MessageKind.INHERITED_METHOD; 722 kind = MessageKind.INHERITED_METHOD;
723 } else { 723 } else {
724 assert(invariant(cls, inherited.isGetter, 724 assert(
725 message: 'Conflicting member is neither a method nor a ' 725 inherited.isGetter,
726 'getter.')); 726 failedAt(cls,
727 'Conflicting member is neither a method nor a getter.'));
727 if (inherited.isDeclaredByField) { 728 if (inherited.isDeclaredByField) {
728 kind = MessageKind.INHERITED_IMPLICIT_GETTER; 729 kind = MessageKind.INHERITED_IMPLICIT_GETTER;
729 } else { 730 } else {
730 kind = MessageKind.INHERITED_EXPLICIT_GETTER; 731 kind = MessageKind.INHERITED_EXPLICIT_GETTER;
731 } 732 }
732 } 733 }
733 infos.add(reporter.createMessage(inherited.element, kind, 734 infos.add(reporter.createMessage(inherited.element, kind,
734 {'class': inherited.declarer, 'name': name.text})); 735 {'class': inherited.declarer, 'name': name.text}));
735 } 736 }
736 reporter.reportWarning(warning, infos); 737 reporter.reportWarning(warning, infos);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 } 909 }
909 910
910 void computeAllClassMembers(Resolution resolution) { 911 void computeAllClassMembers(Resolution resolution) {
911 // TODO(johnniwinther): Should we assert that the class has been resolved 912 // TODO(johnniwinther): Should we assert that the class has been resolved
912 // instead? 913 // instead?
913 ensureResolved(resolution); 914 ensureResolved(resolution);
914 if (areAllMembersComputed()) return; 915 if (areAllMembersComputed()) return;
915 MembersCreator creator = _prepareCreator(resolution); 916 MembersCreator creator = _prepareCreator(resolution);
916 creator.computeAllMembers(); 917 creator.computeAllMembers();
917 computedMemberNames = null; 918 computedMemberNames = null;
918 assert(invariant(this, areAllMembersComputed())); 919 assert(areAllMembersComputed(), failedAt(this));
919 } 920 }
920 921
921 bool areAllMembersComputed() { 922 bool areAllMembersComputed() {
922 return computedMemberNames == null && classMembers != null; 923 return computedMemberNames == null && classMembers != null;
923 } 924 }
924 925
925 bool isMemberComputed(String name) { 926 bool isMemberComputed(String name) {
926 if (computedMemberNames == null) { 927 if (computedMemberNames == null) {
927 return classMembers != null; 928 return classMembers != null;
928 } else { 929 } else {
929 return name == Identifiers.call || computedMemberNames.contains(name); 930 return name == Identifiers.call || computedMemberNames.contains(name);
930 } 931 }
931 } 932 }
932 933
933 Member lookupClassMember(Name name) { 934 Member lookupClassMember(Name name) {
934 assert(invariant(this, isMemberComputed(name.text), 935 assert(isMemberComputed(name.text),
935 message: "Member ${name} has not been computed for $this.")); 936 failedAt(this, "Member ${name} has not been computed for $this."));
936 return classMembers[name]; 937 return classMembers[name];
937 } 938 }
938 939
939 void forEachClassMember(f(Member member)) { 940 void forEachClassMember(f(Member member)) {
940 assert(invariant(this, areAllMembersComputed(), 941 assert(areAllMembersComputed(),
941 message: "Members have not been fully computed for $this.")); 942 failedAt(this, "Members have not been fully computed for $this."));
942 classMembers.forEach((_, member) => f(member)); 943 classMembers.forEach((_, member) => f(member));
943 } 944 }
944 945
945 MemberSignature lookupInterfaceMember(Name name) { 946 MemberSignature lookupInterfaceMember(Name name) {
946 assert(invariant(this, isMemberComputed(name.text), 947 assert(isMemberComputed(name.text),
947 message: "Member ${name.text} has not been computed for $this.")); 948 failedAt(this, "Member ${name.text} has not been computed for $this."));
948 if (interfaceMembersAreClassMembers) { 949 if (interfaceMembersAreClassMembers) {
949 Member member = classMembers[name]; 950 Member member = classMembers[name];
950 if (member != null && member.isStatic) return null; 951 if (member != null && member.isStatic) return null;
951 return member; 952 return member;
952 } 953 }
953 return interfaceMembers[name]; 954 return interfaceMembers[name];
954 } 955 }
955 956
956 void forEachInterfaceMember(f(MemberSignature member)) { 957 void forEachInterfaceMember(f(MemberSignature member)) {
957 assert(invariant(this, areAllMembersComputed(), 958 assert(areAllMembersComputed(),
958 message: "Members have not been fully computed for $this.")); 959 failedAt(this, "Members have not been fully computed for $this."));
959 if (interfaceMembersAreClassMembers) { 960 if (interfaceMembersAreClassMembers) {
960 classMembers.forEach((_, member) { 961 classMembers.forEach((_, member) {
961 if (!member.isStatic) f(member); 962 if (!member.isStatic) f(member);
962 }); 963 });
963 } else { 964 } else {
964 interfaceMembers.forEach((_, member) => f(member)); 965 interfaceMembers.forEach((_, member) => f(member));
965 } 966 }
966 } 967 }
967 } 968 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/class_hierarchy.dart ('k') | pkg/compiler/lib/src/resolution/constructors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698