| OLD | NEW | 
|---|
| 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('mirrors.util'); | 5 #library('mirrors.util'); | 
| 6 | 6 | 
| 7 // TODO(rnystrom): Use "package:" URL (#4968). | 7 // TODO(rnystrom): Use "package:" URL (#4968). | 
| 8 #import('mirrors.dart'); | 8 #import('mirrors.dart'); | 
| 9 #import('../../../lib/compiler/implementation/util/characters.dart'); | 9 #import('../../../lib/compiler/implementation/util/characters.dart'); | 
| 10 | 10 | 
| 11 //------------------------------------------------------------------------------ | 11 //------------------------------------------------------------------------------ | 
| 12 // Utility functions for using the Mirror API | 12 // Utility functions for using the Mirror API | 
| 13 //------------------------------------------------------------------------------ | 13 //------------------------------------------------------------------------------ | 
| 14 | 14 | 
| 15 /** | 15 /** | 
| 16  * Returns an iterable over the type declarations directly inheriting from | 16  * Returns an iterable over the type declarations directly inheriting from | 
| 17  * the declaration of this type. | 17  * the declaration of this type. | 
| 18  */ | 18  */ | 
| 19 Iterable<ClassMirror> computeSubdeclarations(ClassMirror type) { | 19 Iterable<ClassMirror> computeSubdeclarations(ClassMirror type) { | 
| 20   type = type.declaration; | 20   type = type.declaration; | 
| 21   var subtypes = <ClassMirror>[]; | 21   var subtypes = <ClassMirror>[]; | 
| 22   type.system.libraries.forEach((_, library) { | 22   type.system.libraries.forEach((_, library) { | 
| 23     for (ClassMirror otherType in library.types.values) { | 23     for (ClassMirror otherType in library.classes.values) { | 
| 24       var superClass = otherType.superclass; | 24       var superClass = otherType.superclass; | 
| 25       if (superClass !== null) { | 25       if (superClass !== null) { | 
| 26         superClass = superClass.declaration; | 26         superClass = superClass.declaration; | 
| 27         if (type.library === superClass.library) { | 27         if (type.library === superClass.library) { | 
| 28           if (superClass == type) { | 28           if (superClass == type) { | 
| 29              subtypes.add(otherType); | 29              subtypes.add(otherType); | 
| 30           } | 30           } | 
| 31         } | 31         } | 
| 32       } | 32       } | 
| 33       final superInterfaces = otherType.interfaces; | 33       final superInterfaces = otherType.interfaces; | 
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 126       type = object; | 126       type = object; | 
| 127       object = null; | 127       object = null; | 
| 128       return type; | 128       return type; | 
| 129     } else { | 129     } else { | 
| 130       return push(queue.removeFirst()); | 130       return push(queue.removeFirst()); | 
| 131     } | 131     } | 
| 132   } | 132   } | 
| 133 | 133 | 
| 134   bool get hasNext => !queue.isEmpty || object !== null; | 134   bool get hasNext => !queue.isEmpty || object !== null; | 
| 135 } | 135 } | 
| OLD | NEW | 
|---|