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

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

Issue 304153014: Remove element from DynamicType. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix infinite loop. Created 6 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 | Annotate | Revision Log
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 library dart2js.mirrors_used; 5 library dart2js.mirrors_used;
6 6
7 import 'dart2jslib.dart' show 7 import 'dart2jslib.dart' show
8 Compiler, 8 Compiler,
9 CompilerTask, 9 CompilerTask,
10 Constant, 10 Constant,
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 node, 429 node,
430 kind, {'name': node, 'type': apiTypeOf(constant)}); 430 kind, {'name': node, 'type': apiTypeOf(constant)});
431 return null; 431 return null;
432 } 432 }
433 } 433 }
434 434
435 /// Find the first non-implementation interface of constant. 435 /// Find the first non-implementation interface of constant.
436 DartType apiTypeOf(Constant constant) { 436 DartType apiTypeOf(Constant constant) {
437 DartType type = constant.computeType(compiler); 437 DartType type = constant.computeType(compiler);
438 LibraryElement library = type.element.library; 438 LibraryElement library = type.element.library;
439 if (type.kind == TypeKind.INTERFACE && library.isInternalLibrary) { 439 if (type.isInterfaceType && library.isInternalLibrary) {
440 InterfaceType interface = type; 440 InterfaceType interface = type;
441 ClassElement cls = type.element; 441 ClassElement cls = type.element;
442 cls.ensureResolved(compiler); 442 cls.ensureResolved(compiler);
443 for (DartType supertype in cls.allSupertypes) { 443 for (DartType supertype in cls.allSupertypes) {
444 if (supertype.kind == TypeKind.INTERFACE 444 if (supertype.isInterfaceType
445 && !supertype.element.library.isInternalLibrary) { 445 && !supertype.element.library.isInternalLibrary) {
446 return interface.asInstanceOf(supertype.element); 446 return interface.asInstanceOf(supertype.element);
447 } 447 }
448 } 448 }
449 } 449 }
450 return type; 450 return type;
451 } 451 }
452 452
453 /// Convert a list of strings and types to a list of elements. Types are 453 /// Convert a list of strings and types to a list of elements. Types are
454 /// converted to their corresponding element, and strings are resolved as 454 /// converted to their corresponding element, and strings are resolved as
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 // @MirrorsUsed(targets: fisk) 582 // @MirrorsUsed(targets: fisk)
583 // ^^^^ 583 // ^^^^
584 // 584 //
585 // Instead of saying 'fisk' should pretty print the problematic constant 585 // Instead of saying 'fisk' should pretty print the problematic constant
586 // value. 586 // value.
587 return spannable; 587 return spannable;
588 } 588 }
589 return node; 589 return node;
590 } 590 }
591 } 591 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698