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 import "dart:_internal" as _symbol_dev; | 5 import "dart:_internal" as _symbol_dev; |
6 | 6 |
7 /** | 7 /** |
8 * Returns a [MirrorSystem] for the current isolate. | 8 * Returns a [MirrorSystem] for the current isolate. |
9 */ | 9 */ |
10 patch MirrorSystem currentMirrorSystem() { | 10 patch MirrorSystem currentMirrorSystem() { |
(...skipping 18 matching lines...) Expand all Loading... |
29 */ | 29 */ |
30 patch ClassMirror reflectClass(Type key) { | 30 patch ClassMirror reflectClass(Type key) { |
31 return _Mirrors.reflectClass(key); | 31 return _Mirrors.reflectClass(key); |
32 } | 32 } |
33 | 33 |
34 patch TypeMirror reflectType(Type key) { | 34 patch TypeMirror reflectType(Type key) { |
35 return _Mirrors.reflectType(key); | 35 return _Mirrors.reflectType(key); |
36 } | 36 } |
37 | 37 |
38 patch class MirrorSystem { | 38 patch class MirrorSystem { |
| 39 /* patch */ LibraryMirror findLibrary(Symbol libraryName) { |
| 40 var candidates = |
| 41 libraries.values.where((lib) => lib.simpleName == libraryName); |
| 42 if (candidates.length == 1) { |
| 43 return candidates.single; |
| 44 } |
| 45 if (candidates.length > 1) { |
| 46 var uris = candidates.map((lib) => lib.uri.toString()).toList(); |
| 47 throw new Exception("There are multiple libraries named " |
| 48 "'${getName(libraryName)}': $uris"); |
| 49 } |
| 50 throw new Exception("There is no library named '${getName(libraryName)}'"); |
| 51 } |
| 52 |
39 /* patch */ static String getName(Symbol symbol) { | 53 /* patch */ static String getName(Symbol symbol) { |
40 String string = _symbol_dev.Symbol.getName(symbol); | 54 String string = _symbol_dev.Symbol.getName(symbol); |
41 | 55 |
42 // get:foo -> foo | 56 // get:foo -> foo |
43 // set:foo -> foo= | 57 // set:foo -> foo= |
44 // get:_foo@xxx -> _foo | 58 // get:_foo@xxx -> _foo |
45 // set:_foo@xxx -> _foo= | 59 // set:_foo@xxx -> _foo= |
46 // Class._constructor@xxx -> Class._constructor | 60 // Class._constructor@xxx -> Class._constructor |
47 // _Class@xxx._constructor@xxx -> _Class._constructor | 61 // _Class@xxx._constructor@xxx -> _Class._constructor |
48 // lib._S@xxx with lib._M1@xxx, lib._M2@xxx -> lib._S with lib._M1, lib._M2 | 62 // lib._S@xxx with lib._M1@xxx, lib._M2@xxx -> lib._S with lib._M1, lib._M2 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 // TODO(rmacnak): Eliminate this class. | 105 // TODO(rmacnak): Eliminate this class. |
92 class MirroredCompilationError { | 106 class MirroredCompilationError { |
93 final String message; | 107 final String message; |
94 | 108 |
95 MirroredCompilationError(this.message); | 109 MirroredCompilationError(this.message); |
96 | 110 |
97 String toString() { | 111 String toString() { |
98 return "Compile-time error during mirrored execution: <$message>"; | 112 return "Compile-time error during mirrored execution: <$message>"; |
99 } | 113 } |
100 } | 114 } |
OLD | NEW |