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

Side by Side Diff: pkg/compiler/lib/src/universe/selector.dart

Issue 1342213003: Add optional message to assert in Dart2js - continued (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add dart2js test Created 5 years, 3 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 universe; 5 part of universe;
6 6
7 class SelectorKind { 7 class SelectorKind {
8 final String name; 8 final String name;
9 final int hashCode; 9 final int hashCode;
10 const SelectorKind(this.name, this.hashCode); 10 const SelectorKind(this.name, this.hashCode);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 bool get isSetter => kind == SelectorKind.SETTER; 174 bool get isSetter => kind == SelectorKind.SETTER;
175 bool get isCall => kind == SelectorKind.CALL; 175 bool get isCall => kind == SelectorKind.CALL;
176 bool get isClosureCall => isCall && memberName == CALL_NAME; 176 bool get isClosureCall => isCall && memberName == CALL_NAME;
177 177
178 bool get isIndex => kind == SelectorKind.INDEX && argumentCount == 1; 178 bool get isIndex => kind == SelectorKind.INDEX && argumentCount == 1;
179 bool get isIndexSet => kind == SelectorKind.INDEX && argumentCount == 2; 179 bool get isIndexSet => kind == SelectorKind.INDEX && argumentCount == 2;
180 180
181 bool get isOperator => kind == SelectorKind.OPERATOR; 181 bool get isOperator => kind == SelectorKind.OPERATOR;
182 bool get isUnaryOperator => isOperator && argumentCount == 0; 182 bool get isUnaryOperator => isOperator && argumentCount == 0;
183 183
184 /** Check whether this is a call to 'assert'. */
185 bool get isAssert => isCall && identical(name, "assert");
186
187 /** 184 /**
188 * The member name for invocation mirrors created from this selector. 185 * The member name for invocation mirrors created from this selector.
189 */ 186 */
190 String get invocationMirrorMemberName => 187 String get invocationMirrorMemberName =>
191 isSetter ? '$name=' : name; 188 isSetter ? '$name=' : name;
192 189
193 int get invocationMirrorKind { 190 int get invocationMirrorKind {
194 const int METHOD = 0; 191 const int METHOD = 0;
195 const int GETTER = 1; 192 const int GETTER = 1;
196 const int SETTER = 2; 193 const int SETTER = 2;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 return signatureApplies(element); 226 return signatureApplies(element);
230 } 227 }
231 228
232 bool signatureApplies(FunctionElement function) { 229 bool signatureApplies(FunctionElement function) {
233 if (Elements.isUnresolved(function)) return false; 230 if (Elements.isUnresolved(function)) return false;
234 return callStructure.signatureApplies(function.functionSignature); 231 return callStructure.signatureApplies(function.functionSignature);
235 } 232 }
236 233
237 bool sameNameHack(Element element, World world) { 234 bool sameNameHack(Element element, World world) {
238 // TODO(ngeoffray): Remove workaround checks. 235 // TODO(ngeoffray): Remove workaround checks.
239 return element.isConstructor || 236 return element.isConstructor || name == element.name;
240 name == element.name ||
241 name == 'assert' && world.isAssertMethod(element);
242 } 237 }
243 238
244 bool applies(Element element, World world) { 239 bool applies(Element element, World world) {
245 if (!sameNameHack(element, world)) return false; 240 if (!sameNameHack(element, world)) return false;
246 return appliesUnnamed(element, world); 241 return appliesUnnamed(element, world);
247 } 242 }
248 243
249 bool match(SelectorKind kind, 244 bool match(SelectorKind kind,
250 Name memberName, 245 Name memberName,
251 CallStructure callStructure) { 246 CallStructure callStructure) {
(...skipping 10 matching lines...) Expand all
262 // Add bits from the call structure. 257 // Add bits from the call structure.
263 return Hashing.mixHashCodeBits(hash, callStructure.hashCode); 258 return Hashing.mixHashCodeBits(hash, callStructure.hashCode);
264 } 259 }
265 260
266 String toString() { 261 String toString() {
267 return 'Selector($kind, $name, ${callStructure.structureToString()})'; 262 return 'Selector($kind, $name, ${callStructure.structureToString()})';
268 } 263 }
269 264
270 Selector toCallSelector() => new Selector.callClosureFrom(this); 265 Selector toCallSelector() => new Selector.callClosureFrom(this);
271 } 266 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698