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

Side by Side Diff: pkg/compiler/lib/src/mirrors/dart2js_type_mirrors.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dart2js.mirrors; 5 part of dart2js.mirrors;
6 6
7 abstract class ClassMirrorMixin implements ClassSourceMirror { 7 abstract class ClassMirrorMixin implements ClassSourceMirror {
8 bool get hasReflectedType => false; 8 bool get hasReflectedType => false;
9 Type get reflectedType { 9 Type get reflectedType {
10 throw new UnsupportedError("ClassMirror.reflectedType is not supported."); 10 throw new UnsupportedError("ClassMirror.reflectedType is not supported.");
11 } 11 }
12 InstanceMirror newInstance(Symbol constructorName, 12
13 List positionalArguments, 13 InstanceMirror newInstance(Symbol constructorName, List positionalArguments,
14 [Map<Symbol, dynamic> namedArguments]) { 14 [Map<Symbol, dynamic> namedArguments]) {
15 throw new UnsupportedError("ClassMirror.newInstance is not supported."); 15 throw new UnsupportedError("ClassMirror.newInstance is not supported.");
16 } 16 }
17 } 17 }
18 18
19 abstract class Dart2JsTypeMirror 19 abstract class Dart2JsTypeMirror
20 implements Dart2JsDeclarationMirror, TypeSourceMirror { 20 implements Dart2JsDeclarationMirror, TypeSourceMirror {
21 DartType get _type; 21 DartType get _type;
22 22
23 String get _simpleNameString => _type.name; 23 String get _simpleNameString => _type.name;
24 24
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 57
58 bool isAssignableTo(TypeMirror other) { 58 bool isAssignableTo(TypeMirror other) {
59 if (other is Dart2JsTypeMirror) { 59 if (other is Dart2JsTypeMirror) {
60 return mirrorSystem.compiler.types.isAssignable(this._type, other._type); 60 return mirrorSystem.compiler.types.isAssignable(this._type, other._type);
61 } else { 61 } else {
62 throw new ArgumentError(other); 62 throw new ArgumentError(other);
63 } 63 }
64 } 64 }
65 65
66 String toString() => _type.toString(); 66 String toString() => _type.toString();
67
68 } 67 }
69 68
70 /// Base implementations for mirrors on element based types. 69 /// Base implementations for mirrors on element based types.
71 abstract class Dart2JsTypeElementMirror 70 abstract class Dart2JsTypeElementMirror extends Dart2JsElementMirror
72 extends Dart2JsElementMirror
73 with Dart2JsTypeMirror 71 with Dart2JsTypeMirror
74 implements TypeSourceMirror { 72 implements TypeSourceMirror {
75 final DartType _type; 73 final DartType _type;
76 74
77 Dart2JsTypeElementMirror(Dart2JsMirrorSystem system, DartType type) 75 Dart2JsTypeElementMirror(Dart2JsMirrorSystem system, DartType type)
78 : super(system, type.element), 76 : super(system, type.element),
79 this._type = type; 77 this._type = type;
80 78
81 Dart2JsLibraryMirror get library { 79 Dart2JsLibraryMirror get library {
82 return mirrorSystem._getLibrary(_type.element.library); 80 return mirrorSystem._getLibrary(_type.element.library);
83 } 81 }
84 } 82 }
85 83
86 abstract class DeclarationMixin implements TypeMirror { 84 abstract class DeclarationMixin implements TypeMirror {
87
88 bool get isOriginalDeclaration => true; 85 bool get isOriginalDeclaration => true;
89 86
90 TypeMirror get originalDeclaration => this; 87 TypeMirror get originalDeclaration => this;
91 88
92 List<TypeMirror> get typeArguments => const <TypeMirror>[]; 89 List<TypeMirror> get typeArguments => const <TypeMirror>[];
93 } 90 }
94 91
95 abstract class Dart2JsGenericTypeMirror extends Dart2JsTypeElementMirror { 92 abstract class Dart2JsGenericTypeMirror extends Dart2JsTypeElementMirror {
96 List<TypeMirror> _typeArguments; 93 List<TypeMirror> _typeArguments;
97 List<TypeVariableMirror> _typeVariables; 94 List<TypeVariableMirror> _typeVariables;
(...skipping 19 matching lines...) Expand all
117 } 114 }
118 } 115 }
119 } 116 }
120 return _typeArguments; 117 return _typeArguments;
121 } 118 }
122 119
123 List<TypeVariableMirror> get typeVariables { 120 List<TypeVariableMirror> get typeVariables {
124 if (_typeVariables == null) { 121 if (_typeVariables == null) {
125 _typeVariables = <TypeVariableMirror>[]; 122 _typeVariables = <TypeVariableMirror>[];
126 for (TypeVariableType typeVariable in _element.typeVariables) { 123 for (TypeVariableType typeVariable in _element.typeVariables) {
127 _typeVariables.add( 124 _typeVariables
128 new Dart2JsTypeVariableMirror(mirrorSystem, typeVariable)); 125 .add(new Dart2JsTypeVariableMirror(mirrorSystem, typeVariable));
129 } 126 }
130 } 127 }
131 return _typeVariables; 128 return _typeVariables;
132 } 129 }
133 130
134 Iterable<Dart2JsMemberMirror> _getDeclarationMirrors(Element element) { 131 Iterable<Dart2JsMemberMirror> _getDeclarationMirrors(Element element) {
135 if (element.isTypeVariable) { 132 if (element.isTypeVariable) {
136 assert(invariant(_element, _element == element.enclosingElement, 133 assert(invariant(_element, _element == element.enclosingElement,
137 message: 'Foreigned type variable element $element.')); 134 message: 'Foreigned type variable element $element.'));
138 for (Dart2JsTypeVariableMirror mirror in typeVariables) { 135 for (Dart2JsTypeVariableMirror mirror in typeVariables) {
139 if (mirror._element == element) return [mirror]; 136 if (mirror._element == element) return [mirror];
140 } 137 }
141 } 138 }
142 return super._getDeclarationMirrors(element); 139 return super._getDeclarationMirrors(element);
143 } 140 }
144 141
145 TypeMirror _getTypeMirror(DartType type) { 142 TypeMirror _getTypeMirror(DartType type) {
146 return super._getTypeMirror( 143 return super._getTypeMirror(
147 type.subst(_type.typeArguments, _type.element.typeVariables)); 144 type.subst(_type.typeArguments, _type.element.typeVariables));
148 } 145 }
149 146
150 TypeSourceMirror createInstantiation( 147 TypeSourceMirror createInstantiation(
151 List<TypeSourceMirror> newTypeArguments) { 148 List<TypeSourceMirror> newTypeArguments) {
152 if (newTypeArguments.isEmpty) return owner._getTypeMirror(_type.asRaw()); 149 if (newTypeArguments.isEmpty) return owner._getTypeMirror(_type.asRaw());
153 if (newTypeArguments.length != typeVariables.length) { 150 if (newTypeArguments.length != typeVariables.length) {
154 throw new ArgumentError('Cannot create generic instantiation of $_type ' 151 throw new ArgumentError('Cannot create generic instantiation of $_type '
155 'with ${newTypeArguments.length} arguments, ' 152 'with ${newTypeArguments.length} arguments, '
156 'expect ${typeVariables.length} arguments.'); 153 'expect ${typeVariables.length} arguments.');
157 } 154 }
158 List<DartType> builder = <DartType>[]; 155 List<DartType> builder = <DartType>[];
159 for (TypeSourceMirror newTypeArgument in newTypeArguments) { 156 for (TypeSourceMirror newTypeArgument in newTypeArguments) {
160 if (newTypeArgument.isVoid) { 157 if (newTypeArgument.isVoid) {
161 throw new ArgumentError('Cannot use void as type argument.'); 158 throw new ArgumentError('Cannot use void as type argument.');
162 } 159 }
163 if (newTypeArgument is Dart2JsTypeMirror) { 160 if (newTypeArgument is Dart2JsTypeMirror) {
164 builder.add(newTypeArgument._type); 161 builder.add(newTypeArgument._type);
165 } else { 162 } else {
166 throw new UnsupportedError( 163 throw new UnsupportedError('Cannot create instantiation using a type '
167 'Cannot create instantiation using a type '
168 'mirror from a different mirrorSystem implementation.'); 164 'mirror from a different mirrorSystem implementation.');
169 } 165 }
170 } 166 }
171 return owner._getTypeMirror(_type.createInstantiation(builder)); 167 return owner._getTypeMirror(_type.createInstantiation(builder));
172 } 168 }
173 } 169 }
174 170
175 class Dart2JsInterfaceTypeMirror 171 class Dart2JsInterfaceTypeMirror extends Dart2JsGenericTypeMirror
176 extends Dart2JsGenericTypeMirror
177 with ObjectMirrorMixin, ClassMirrorMixin, ContainerMixin 172 with ObjectMirrorMixin, ClassMirrorMixin, ContainerMixin
178 implements ClassMirror { 173 implements ClassMirror {
179 Dart2JsInterfaceTypeMirror(Dart2JsMirrorSystem system, 174 Dart2JsInterfaceTypeMirror(
180 InterfaceType interfaceType) 175 Dart2JsMirrorSystem system, InterfaceType interfaceType)
181 : super(system, interfaceType); 176 : super(system, interfaceType);
182 177
183 ClassElement get _element => super._element; 178 ClassElement get _element => super._element;
184 179
185 InterfaceType get _type => super._type; 180 InterfaceType get _type => super._type;
186 181
187 bool get isNameSynthetic { 182 bool get isNameSynthetic {
188 if (_element.isMixinApplication) { 183 if (_element.isMixinApplication) {
189 MixinApplicationElement mixinApplication = _element; 184 MixinApplicationElement mixinApplication = _element;
190 return mixinApplication.isUnnamedMixinApplication; 185 return mixinApplication.isUnnamedMixinApplication;
191 } 186 }
192 return false; 187 return false;
193 } 188 }
194 189
195 void _forEachElement(f(Element element)) { 190 void _forEachElement(f(Element element)) {
196 _element.forEachMember((_, element) => f(element)); 191 _element.forEachMember((_, element) => f(element));
197 } 192 }
198 193
199 ClassMirror get superclass { 194 ClassMirror get superclass {
200 if (_element.supertype != null) { 195 if (_element.supertype != null) {
201 return _getTypeMirror(_element.supertype); 196 return _getTypeMirror(_element.supertype);
202 } 197 }
203 return null; 198 return null;
204 } 199 }
205 200
206 bool isSubclassOf(Mirror other) { 201 bool isSubclassOf(Mirror other) {
207 if (other is Dart2JsTypeMirror) { 202 if (other is Dart2JsTypeMirror) {
208 return other._type.element != null && 203 return other._type.element != null &&
209 _element.isSubclassOf(other._type.element); 204 _element.isSubclassOf(other._type.element);
210 } else { 205 } else {
211 throw new ArgumentError(other); 206 throw new ArgumentError(other);
212 } 207 }
213 } 208 }
214 209
215 ClassMirror get mixin { 210 ClassMirror get mixin {
216 if (_element.isMixinApplication) { 211 if (_element.isMixinApplication) {
217 MixinApplicationElement mixinApplication = _element; 212 MixinApplicationElement mixinApplication = _element;
218 return _getTypeMirror(mixinApplication.mixinType); 213 return _getTypeMirror(mixinApplication.mixinType);
219 } 214 }
(...skipping 24 matching lines...) Expand all
244 } 239 }
245 if (other is! ClassMirror) { 240 if (other is! ClassMirror) {
246 return false; 241 return false;
247 } 242 }
248 return _type == other._type; 243 return _type == other._type;
249 } 244 }
250 245
251 String toString() => 'Mirror on interface type $_type'; 246 String toString() => 'Mirror on interface type $_type';
252 } 247 }
253 248
254 class Dart2JsClassDeclarationMirror 249 class Dart2JsClassDeclarationMirror extends Dart2JsInterfaceTypeMirror
255 extends Dart2JsInterfaceTypeMirror
256 with DeclarationMixin { 250 with DeclarationMixin {
257 251 Dart2JsClassDeclarationMirror(Dart2JsMirrorSystem system, InterfaceType type)
258 Dart2JsClassDeclarationMirror(Dart2JsMirrorSystem system,
259 InterfaceType type)
260 : super(system, type); 252 : super(system, type);
261 253
262 bool isSubclassOf(ClassMirror other) { 254 bool isSubclassOf(ClassMirror other) {
263 if (other is Dart2JsClassDeclarationMirror) { 255 if (other is Dart2JsClassDeclarationMirror) {
264 Dart2JsClassDeclarationMirror otherDeclaration = 256 Dart2JsClassDeclarationMirror otherDeclaration =
265 other.originalDeclaration; 257 other.originalDeclaration;
266 return _element.isSubclassOf(otherDeclaration._element); 258 return _element.isSubclassOf(otherDeclaration._element);
267 } else if (other is FunctionTypeMirror) { 259 } else if (other is FunctionTypeMirror) {
268 return false; 260 return false;
269 } 261 }
270 throw new ArgumentError(other); 262 throw new ArgumentError(other);
271 } 263 }
272 264
273 String toString() => 'Mirror on class ${_type.name}'; 265 String toString() => 'Mirror on class ${_type.name}';
274 } 266 }
275 267
276 class Dart2JsTypedefMirror 268 class Dart2JsTypedefMirror extends Dart2JsGenericTypeMirror
277 extends Dart2JsGenericTypeMirror
278 implements TypedefMirror { 269 implements TypedefMirror {
279 final Dart2JsLibraryMirror _library; 270 final Dart2JsLibraryMirror _library;
280 List<TypeVariableMirror> _typeVariables; 271 List<TypeVariableMirror> _typeVariables;
281 var _definition; 272 var _definition;
282 273
283 Dart2JsTypedefMirror(Dart2JsMirrorSystem system, TypedefType _typedef) 274 Dart2JsTypedefMirror(Dart2JsMirrorSystem system, TypedefType _typedef)
284 : this._library = system._getLibrary(_typedef.element.library), 275 : this._library = system._getLibrary(_typedef.element.library),
285 super(system, _typedef); 276 super(system, _typedef);
286 277
287 Dart2JsTypedefMirror.fromLibrary(Dart2JsLibraryMirror library, 278 Dart2JsTypedefMirror.fromLibrary(
288 TypedefType _typedef) 279 Dart2JsLibraryMirror library, TypedefType _typedef)
289 : this._library = library, 280 : this._library = library,
290 super(library.mirrorSystem, _typedef); 281 super(library.mirrorSystem, _typedef);
291 282
292 TypedefType get _typedef => _type; 283 TypedefType get _typedef => _type;
293 284
294 LibraryMirror get library => _library; 285 LibraryMirror get library => _library;
295 286
296 bool get isTypedef => true; 287 bool get isTypedef => true;
297 288
298 FunctionTypeMirror get referent { 289 FunctionTypeMirror get referent {
299 if (_definition == null) { 290 if (_definition == null) {
300 _definition = _getTypeMirror(_typedef.element.alias); 291 _definition = _getTypeMirror(_typedef.element.alias);
301 } 292 }
302 return _definition; 293 return _definition;
303 } 294 }
304 295
305 bool get isClass => false; 296 bool get isClass => false;
306 297
307 bool get isAbstract => false; 298 bool get isAbstract => false;
308 299
309 bool get isEnum => throw new UnimplementedError(); 300 bool get isEnum => throw new UnimplementedError();
310 301
311 String toString() => 'Mirror on typedef $_type'; 302 String toString() => 'Mirror on typedef $_type';
312 } 303 }
313 304
314 class Dart2JsTypedefDeclarationMirror 305 class Dart2JsTypedefDeclarationMirror extends Dart2JsTypedefMirror
315 extends Dart2JsTypedefMirror
316 with DeclarationMixin { 306 with DeclarationMixin {
317 Dart2JsTypedefDeclarationMirror(Dart2JsMirrorSystem system, 307 Dart2JsTypedefDeclarationMirror(Dart2JsMirrorSystem system, TypedefType type)
318 TypedefType type)
319 : super(system, type); 308 : super(system, type);
320 309
321 String toString() => 'Mirror on typedef ${_type.name}'; 310 String toString() => 'Mirror on typedef ${_type.name}';
322 } 311 }
323 312
324 class Dart2JsTypeVariableMirror extends Dart2JsTypeElementMirror 313 class Dart2JsTypeVariableMirror extends Dart2JsTypeElementMirror
325 implements TypeVariableMirror { 314 implements TypeVariableMirror {
326 Dart2JsDeclarationMirror _owner; 315 Dart2JsDeclarationMirror _owner;
327 316
328 Dart2JsTypeVariableMirror(Dart2JsMirrorSystem system, 317 Dart2JsTypeVariableMirror(
329 TypeVariableType typeVariableType) 318 Dart2JsMirrorSystem system, TypeVariableType typeVariableType)
330 : super(system, typeVariableType); 319 : super(system, typeVariableType);
331 320
332 TypeVariableType get _type => super._type; 321 TypeVariableType get _type => super._type;
333 322
334 Dart2JsDeclarationMirror get owner { 323 Dart2JsDeclarationMirror get owner {
335 if (_owner == null) { 324 if (_owner == null) {
336 _owner = mirrorSystem._getTypeDeclarationMirror( 325 _owner =
337 _type.element.typeDeclaration); 326 mirrorSystem._getTypeDeclarationMirror(_type.element.typeDeclaration);
338 } 327 }
339 return _owner; 328 return _owner;
340 } 329 }
341 330
342 bool get isStatic => false; 331 bool get isStatic => false;
343 332
344 TypeMirror get upperBound => owner._getTypeMirror(_type.element.bound); 333 TypeMirror get upperBound => owner._getTypeMirror(_type.element.bound);
345 334
346 bool operator ==(var other) { 335 bool operator ==(var other) {
347 if (identical(this, other)) { 336 if (identical(this, other)) {
348 return true; 337 return true;
349 } 338 }
350 if (other is! TypeVariableMirror) { 339 if (other is! TypeVariableMirror) {
351 return false; 340 return false;
352 } 341 }
353 if (owner != other.owner) { 342 if (owner != other.owner) {
354 return false; 343 return false;
355 } 344 }
356 return qualifiedName == other.qualifiedName; 345 return qualifiedName == other.qualifiedName;
357 } 346 }
358 347
359 String toString() => 'Mirror on type variable $_type'; 348 String toString() => 'Mirror on type variable $_type';
360 } 349 }
361 350
362 class Dart2JsFunctionTypeMirror extends Dart2JsTypeElementMirror 351 class Dart2JsFunctionTypeMirror extends Dart2JsTypeElementMirror
363 with ObjectMirrorMixin, ClassMirrorMixin, DeclarationMixin 352 with ObjectMirrorMixin, ClassMirrorMixin, DeclarationMixin
364 implements FunctionTypeMirror { 353 implements FunctionTypeMirror {
365 List<ParameterMirror> _parameters; 354 List<ParameterMirror> _parameters;
366 355
367 Dart2JsFunctionTypeMirror(Dart2JsMirrorSystem system, 356 Dart2JsFunctionTypeMirror(
368 FunctionType functionType) 357 Dart2JsMirrorSystem system, FunctionType functionType)
369 : super(system, functionType) { 358 : super(system, functionType) {
370 assert (functionType.element != null); 359 assert(functionType.element != null);
371 } 360 }
372 361
373 FunctionType get _type => super._type; 362 FunctionType get _type => super._type;
374 363
375 // TODO(johnniwinther): Is this the qualified name of a function type? 364 // TODO(johnniwinther): Is this the qualified name of a function type?
376 Symbol get qualifiedName => originalDeclaration.qualifiedName; 365 Symbol get qualifiedName => originalDeclaration.qualifiedName;
377 366
378 // TODO(johnniwinther): Substitute type arguments for type variables. 367 // TODO(johnniwinther): Substitute type arguments for type variables.
379 Map<Symbol, DeclarationMirror> get declarations { 368 Map<Symbol, DeclarationMirror> get declarations {
380 var method = callMethod; 369 var method = callMethod;
381 if (method != null) { 370 if (method != null) {
382 var map = new Map<Symbol, DeclarationMirror>.from( 371 var map = new Map<Symbol, DeclarationMirror>.from(
383 originalDeclaration.declarations); 372 originalDeclaration.declarations);
384 var name = method.qualifiedName; 373 var name = method.qualifiedName;
385 assert(!map.containsKey(name)); 374 assert(!map.containsKey(name));
386 map[name] = method; 375 map[name] = method;
387 return new UnmodifiableMapView<Symbol, DeclarationMirror>(map); 376 return new UnmodifiableMapView<Symbol, DeclarationMirror>(map);
388 } 377 }
389 return originalDeclaration.declarations; 378 return originalDeclaration.declarations;
390 } 379 }
391 380
392 bool get isFunction => true; 381 bool get isFunction => true;
393 382
394 MethodMirror get callMethod => _convertElementMethodToMethodMirror( 383 MethodMirror get callMethod => _convertElementMethodToMethodMirror(
395 mirrorSystem._getLibrary(_type.element.library), 384 mirrorSystem._getLibrary(_type.element.library), _type.element);
396 _type.element);
397 385
398 ClassMirror get originalDeclaration => 386 ClassMirror get originalDeclaration => mirrorSystem._getTypeDeclarationMirror(
399 mirrorSystem._getTypeDeclarationMirror( 387 mirrorSystem.compiler.coreClasses.functionClass);
400 mirrorSystem.compiler.coreClasses.functionClass);
401 388
402 // TODO(johnniwinther): Substitute type arguments for type variables. 389 // TODO(johnniwinther): Substitute type arguments for type variables.
403 ClassMirror get superclass => originalDeclaration.superclass; 390 ClassMirror get superclass => originalDeclaration.superclass;
404 391
405 // TODO(johnniwinther): Substitute type arguments for type variables. 392 // TODO(johnniwinther): Substitute type arguments for type variables.
406 List<ClassMirror> get superinterfaces => originalDeclaration.superinterfaces; 393 List<ClassMirror> get superinterfaces => originalDeclaration.superinterfaces;
407 394
408 Map<Symbol, MethodMirror> get instanceMembers => null; 395 Map<Symbol, MethodMirror> get instanceMembers => null;
409 Map<Symbol, MethodMirror> get staticMembers => null; 396 Map<Symbol, MethodMirror> get staticMembers => null;
410 397
(...skipping 23 matching lines...) Expand all
434 bool isSubclassOf(ClassMirror other) => false; 421 bool isSubclassOf(ClassMirror other) => false;
435 } 422 }
436 423
437 /// Common superclass for mirrors on `dynamic` and `void`. 424 /// Common superclass for mirrors on `dynamic` and `void`.
438 abstract class Dart2JsBuiltinTypeMirror extends Dart2JsDeclarationMirror 425 abstract class Dart2JsBuiltinTypeMirror extends Dart2JsDeclarationMirror
439 with Dart2JsTypeMirror 426 with Dart2JsTypeMirror
440 implements TypeSourceMirror { 427 implements TypeSourceMirror {
441 final Dart2JsMirrorSystem mirrorSystem; 428 final Dart2JsMirrorSystem mirrorSystem;
442 final DartType _type; 429 final DartType _type;
443 430
444 Dart2JsBuiltinTypeMirror(Dart2JsMirrorSystem this.mirrorSystem, 431 Dart2JsBuiltinTypeMirror(
445 DartType this._type); 432 Dart2JsMirrorSystem this.mirrorSystem, DartType this._type);
446 433
447 Symbol get qualifiedName => simpleName; 434 Symbol get qualifiedName => simpleName;
448 435
449 /** 436 /**
450 * The builtin types have has no location. 437 * The builtin types have has no location.
451 */ 438 */
452 SourceLocation get location => null; 439 SourceLocation get location => null;
453 440
454 /** 441 /**
455 * The builtin types have has no owner. 442 * The builtin types have has no owner.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 if (other is! TypeMirror) { 488 if (other is! TypeMirror) {
502 return false; 489 return false;
503 } 490 }
504 return other.isDynamic; 491 return other.isDynamic;
505 } 492 }
506 493
507 int get hashCode => 13 * _type.hashCode; 494 int get hashCode => 13 * _type.hashCode;
508 495
509 String toString() => 'Mirror on dynamic'; 496 String toString() => 'Mirror on dynamic';
510 } 497 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/mirrors/dart2js_mirrors.dart ('k') | pkg/compiler/lib/src/mirrors/mirrors_util.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698