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

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

Issue 2944843002: All strong mode cleaning of dart2js. (Closed)
Patch Set: More issues discovered during testing. Created 3 years, 6 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/elements.dart' 10 import '../elements/elements.dart'
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 /// [classMembers]. 98 /// [classMembers].
99 /// 99 ///
100 /// If [name] and [names] are not null, the computation is restricted to 100 /// If [name] and [names] are not null, the computation is restricted to
101 /// members with these names. 101 /// members with these names.
102 void computeSuperClassMembers(String name, Setlet<Name> names) { 102 void computeSuperClassMembers(String name, Setlet<Name> names) {
103 ResolutionInterfaceType supertype = cls.supertype; 103 ResolutionInterfaceType supertype = cls.supertype;
104 if (supertype == null) return; 104 if (supertype == null) return;
105 ClassElement superclass = supertype.element; 105 ClassElement superclass = supertype.element;
106 106
107 // Inherit class and interface members from superclass. 107 // Inherit class and interface members from superclass.
108 void inheritClassMember(DeclaredMember member) { 108 void inheritClassMember(Member _member) {
109 DeclaredMember member = _member;
109 if (shouldSkipMember(member)) return; 110 if (shouldSkipMember(member)) return;
110 if (!member.isStatic) { 111 if (!member.isStatic) {
111 DeclaredMember inherited = member.inheritFrom(supertype); 112 DeclaredMember inherited = member.inheritFrom(supertype);
112 classMembers[member.name] = inherited; 113 classMembers[member.name] = inherited;
113 } 114 }
114 } 115 }
115 116
116 if (names != null) { 117 if (names != null) {
117 _computeClassMember(resolution, superclass, name, names); 118 _computeClassMember(resolution, superclass, name, names);
118 for (Name memberName in names) { 119 for (Name memberName in names) {
(...skipping 10 matching lines...) Expand all
129 /// If [name] and [names] are not null, the computation is restricted to 130 /// If [name] and [names] are not null, the computation is restricted to
130 /// members with these names. 131 /// members with these names.
131 Map<Name, Member> computeClassMembers(String nameText, Setlet<Name> names) { 132 Map<Name, Member> computeClassMembers(String nameText, Setlet<Name> names) {
132 Map<Name, Member> declaredMembers = new Map<Name, Member>(); 133 Map<Name, Member> declaredMembers = new Map<Name, Member>();
133 134
134 if (cls.isMixinApplication) { 135 if (cls.isMixinApplication) {
135 MixinApplicationElement mixinApplication = cls; 136 MixinApplicationElement mixinApplication = cls;
136 if (mixinApplication.mixin != null) { 137 if (mixinApplication.mixin != null) {
137 // Only mix in class members when the mixin type is not malformed. 138 // Only mix in class members when the mixin type is not malformed.
138 139
139 void inheritMixinMember(DeclaredMember member) { 140 void inheritMixinMember(Member _member) {
141 DeclaredMember member = _member;
140 if (shouldSkipMember(member)) return; 142 if (shouldSkipMember(member)) return;
141 Name name = member.name; 143 Name name = member.name;
142 if (!member.isAbstract && !member.isStatic) { 144 if (!member.isAbstract && !member.isStatic) {
143 // Abstract and static members are not mixed in. 145 // Abstract and static members are not mixed in.
144 DeclaredMember mixedInMember = 146 DeclaredMember mixedInMember =
145 member.inheritFrom(mixinApplication.mixinType); 147 member.inheritFrom(mixinApplication.mixinType);
146 DeclaredMember inherited = classMembers[name]; 148 DeclaredMember inherited = classMembers[name];
147 classMembers[name] = mixedInMember; 149 classMembers[name] = mixedInMember;
148 checkValidOverride(mixedInMember, inherited); 150 checkValidOverride(mixedInMember, inherited);
149 } 151 }
150 } 152 }
151 153
152 if (names != null) { 154 if (names != null) {
153 _computeClassMember( 155 _computeClassMember(
154 resolution, mixinApplication.mixin, nameText, names); 156 resolution, mixinApplication.mixin, nameText, names);
155 for (Name memberName in names) { 157 for (Name memberName in names) {
156 inheritMixinMember( 158 inheritMixinMember(
157 mixinApplication.mixin.lookupClassMember(memberName)); 159 mixinApplication.mixin.lookupClassMember(memberName));
158 } 160 }
159 } else { 161 } else {
160 computeAllClassMembers(resolution, mixinApplication.mixin); 162 computeAllClassMembers(resolution, mixinApplication.mixin);
161 mixinApplication.mixin.forEachClassMember(inheritMixinMember); 163 mixinApplication.mixin.forEachClassMember(inheritMixinMember);
162 } 164 }
163 } 165 }
164 } else { 166 } else {
165 LibraryElement library = cls.library; 167 LibraryElement library = cls.library;
166 ResolutionInterfaceType thisType = cls.thisType; 168 ResolutionInterfaceType thisType = cls.thisType;
167 169
168 void createMember(MemberElement element) { 170 void createMember(Element _element) {
171 MemberElement element = _element;
169 if (element.isConstructor) return; 172 if (element.isConstructor) return;
170 String elementName = element.name; 173 String elementName = element.name;
171 if (shouldSkipName(elementName)) return; 174 if (shouldSkipName(elementName)) return;
172 if (nameText != null && elementName != nameText) return; 175 if (nameText != null && elementName != nameText) return;
173 176
174 void addDeclaredMember(Name name, ResolutionDartType type, 177 void addDeclaredMember(Name name, ResolutionDartType type,
175 ResolutionFunctionType functionType) { 178 ResolutionFunctionType functionType) {
176 DeclaredMember inherited = classMembers[name]; 179 DeclaredMember inherited = classMembers[name];
177 DeclaredMember declared; 180 DeclaredMember declared;
178 if (element.isAbstract) { 181 if (element.isAbstract) {
(...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 failedAt(this, "Members have not been fully computed for $this.")); 965 failedAt(this, "Members have not been fully computed for $this."));
963 if (interfaceMembersAreClassMembers) { 966 if (interfaceMembersAreClassMembers) {
964 classMembers.forEach((_, member) { 967 classMembers.forEach((_, member) {
965 if (!member.isStatic) f(member); 968 if (!member.isStatic) f(member);
966 }); 969 });
967 } else { 970 } else {
968 interfaceMembers.forEach((_, member) => f(member)); 971 interfaceMembers.forEach((_, member) => f(member));
969 } 972 }
970 } 973 }
971 } 974 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/parser/partial_elements.dart ('k') | pkg/compiler/lib/src/resolution/enum_creator.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698