OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library mirrors; | |
6 | |
7 import 'dart:mirrors'; | |
8 import 'dart:mirrors' as api show SourceLocation; | |
9 export 'dart:mirrors'; | |
10 | |
11 abstract class DeclarationSourceMirror implements DeclarationMirror { | |
12 /// Returns `true` if the name of this declaration is generated by the | |
13 /// provider of the mirror system. | |
14 bool get isNameSynthetic; | |
15 | |
16 /** | |
17 * Looks up [name] in the scope of this declaration. | |
18 * | |
19 * [name] may be either a single identifier, like 'foo', or of the | |
20 * a prefixed identifier, like 'foo.bar', where 'foo' must be a prefix. | |
21 * For methods and constructors, the scope includes the parameters. For | |
22 * classes and typedefs, the scope includes the type variables. | |
23 * For classes and class members, the scope includes inherited members. | |
24 * | |
25 * See also: | |
26 * | |
27 * * [Lexical Scope](https://www.dartlang.org/docs/dart-up-and-running/content
s/ch02.html#ch02-lexical-scope) | |
28 * in Dart Up and Running. | |
29 * * [Lexical Scoping](http://www.dartlang.org/docs/spec/latest/dart-language-
specification.html#h.jb82efuudrc5) | |
30 * in the Dart Specification. | |
31 */ | |
32 DeclarationMirror lookupInScope(String name); | |
33 } | |
34 | |
35 /** | |
36 * Specialized [InstanceMirror] used for reflection on constant lists. | |
37 */ | |
38 abstract class ListInstanceMirror implements InstanceMirror { | |
39 /** | |
40 * Returns an instance mirror of the value at [index] or throws a [RangeError] | |
41 * if the [index] is out of bounds. | |
42 */ | |
43 InstanceMirror getElement(int index); | |
44 | |
45 /** | |
46 * The number of elements in the list. | |
47 */ | |
48 int get length; | |
49 } | |
50 | |
51 /** | |
52 * Specialized [InstanceMirror] used for reflection on constant maps. | |
53 */ | |
54 abstract class MapInstanceMirror implements InstanceMirror { | |
55 /** | |
56 * Returns a collection containing all the keys in the map. | |
57 */ | |
58 Iterable<String> get keys; | |
59 | |
60 /** | |
61 * Returns an instance mirror of the value for the given key or | |
62 * null if key is not in the map. | |
63 */ | |
64 InstanceMirror getValue(String key); | |
65 | |
66 /** | |
67 * The number of {key, value} pairs in the map. | |
68 */ | |
69 int get length; | |
70 } | |
71 | |
72 /** | |
73 * Specialized [InstanceMirror] used for reflection on type constants. | |
74 */ | |
75 abstract class TypeInstanceMirror implements InstanceMirror { | |
76 /** | |
77 * Returns the type mirror for the type represented by the reflected type | |
78 * constant. | |
79 */ | |
80 TypeMirror get representedType; | |
81 } | |
82 | |
83 /** | |
84 * Specialized [InstanceMirror] used for reflection on comments as metadata. | |
85 */ | |
86 abstract class CommentInstanceMirror implements InstanceMirror { | |
87 /** | |
88 * The comment text as written in the source text. | |
89 */ | |
90 String get text; | |
91 | |
92 /** | |
93 * The comment text without the start, end, and padding text. | |
94 * | |
95 * For example, if [text] is [: /** Comment text. */ :] then the [trimmedText] | |
96 * is [: Comment text. :]. | |
97 */ | |
98 String get trimmedText; | |
99 | |
100 /** | |
101 * Is [:true:] if this comment is a documentation comment. | |
102 * | |
103 * That is, that the comment is either enclosed in [: /** ... */ :] or starts | |
104 * with [: /// :]. | |
105 */ | |
106 bool get isDocComment; | |
107 } | |
108 | |
109 /** | |
110 * A library. | |
111 */ | |
112 abstract class LibrarySourceMirror | |
113 implements DeclarationSourceMirror, LibraryMirror { | |
114 /** | |
115 * Returns a list of the imports and exports in this library; | |
116 */ | |
117 List<LibraryDependencyMirror> get libraryDependencies; | |
118 } | |
119 | |
120 /// A mirror on an import or export declaration. | |
121 abstract class LibraryDependencySourceMirror | |
122 extends Mirror implements LibraryDependencyMirror { | |
123 /// Is `true` if this dependency is an import. | |
124 bool get isImport; | |
125 | |
126 /// Is `true` if this dependency is an export. | |
127 bool get isExport; | |
128 | |
129 /// Returns the library mirror of the library that imports or exports the | |
130 /// [targetLibrary]. | |
131 LibraryMirror get sourceLibrary; | |
132 | |
133 /// Returns the library mirror of the library that is imported or exported. | |
134 LibraryMirror get targetLibrary; | |
135 | |
136 /// Returns the prefix if this is a prefixed import and `null` otherwise. | |
137 /*String*/ get prefix; | |
138 | |
139 /// Returns the list of show/hide combinators on the import/export | |
140 /// declaration. | |
141 List<CombinatorMirror> get combinators; | |
142 | |
143 /// Returns the source location for this import/export declaration. | |
144 SourceLocation get location; | |
145 } | |
146 | |
147 /// A mirror on a show/hide combinator declared on a library dependency. | |
148 abstract class CombinatorSourceMirror | |
149 extends Mirror implements CombinatorMirror { | |
150 /// The list of identifiers on the combinator. | |
151 List/*<String>*/ get identifiers; | |
152 | |
153 /// Is `true` if this is a 'show' combinator. | |
154 bool get isShow; | |
155 | |
156 /// Is `true` if this is a 'hide' combinator. | |
157 bool get isHide; | |
158 } | |
159 | |
160 /** | |
161 * Common interface for classes, interfaces, typedefs and type variables. | |
162 */ | |
163 abstract class TypeSourceMirror implements DeclarationSourceMirror, TypeMirror { | |
164 /// Returns `true` is this is a mirror on the void type. | |
165 bool get isVoid; | |
166 | |
167 /// Returns `true` is this is a mirror on the dynamic type. | |
168 bool get isDynamic; | |
169 | |
170 /// Create a type mirror on the instantiation of the declaration of this type | |
171 /// with [typeArguments] as type arguments. | |
172 TypeMirror createInstantiation(List<TypeMirror> typeArguments); | |
173 } | |
174 | |
175 /** | |
176 * A class or interface type. | |
177 */ | |
178 abstract class ClassSourceMirror implements TypeSourceMirror, ClassMirror { | |
179 /** | |
180 * Is [:true:] if this class is declared abstract. | |
181 */ | |
182 bool get isAbstract; | |
183 } | |
184 | |
185 /** | |
186 * A formal parameter. | |
187 */ | |
188 abstract class ParameterSourceMirror implements ParameterMirror { | |
189 /** | |
190 * Returns [:true:] iff this parameter is an initializing formal of a | |
191 * constructor. That is, if it is of the form [:this.x:] where [:x:] is a | |
192 * field. | |
193 */ | |
194 bool get isInitializingFormal; | |
195 | |
196 /** | |
197 * Returns the initialized field, if this parameter is an initializing formal. | |
198 */ | |
199 VariableMirror get initializedField; | |
200 } | |
201 | |
202 /** | |
203 * A [SourceLocation] describes the span of an entity in Dart source code. | |
204 * A [SourceLocation] with a non-zero [length] should be the minimum span that | |
205 * encloses the declaration of the mirrored entity. | |
206 */ | |
207 abstract class SourceLocation implements api.SourceLocation { | |
208 /** | |
209 * The 1-based line number for this source location. | |
210 * | |
211 * A value of 0 means that the line number is unknown. | |
212 */ | |
213 int get line; | |
214 | |
215 /** | |
216 * The 1-based column number for this source location. | |
217 * | |
218 * A value of 0 means that the column number is unknown. | |
219 */ | |
220 int get column; | |
221 | |
222 /** | |
223 * The 0-based character offset into the [sourceText] where this source | |
224 * location begins. | |
225 * | |
226 * A value of -1 means that the offset is unknown. | |
227 */ | |
228 int get offset; | |
229 | |
230 /** | |
231 * The number of characters in this source location. | |
232 * | |
233 * A value of 0 means that the [offset] is approximate. | |
234 */ | |
235 int get length; | |
236 | |
237 /** | |
238 * The text of the location span. | |
239 */ | |
240 String get text; | |
241 | |
242 /** | |
243 * Returns the URI where the source originated. | |
244 */ | |
245 Uri get sourceUri; | |
246 | |
247 /** | |
248 * Returns the text of this source. | |
249 */ | |
250 String get sourceText; | |
251 } | |
OLD | NEW |