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; | 5 library mirrors; |
6 | 6 |
7 /** | 7 import 'dart:mirrors'; |
8 * The main interface for the whole mirror system. | 8 import 'dart:mirrors' as api show SourceLocation; |
9 */ | 9 export 'dart:mirrors'; |
10 abstract class MirrorSystem { | |
11 /** | |
12 * Returns an unmodifiable map of all libraries in this mirror system. | |
13 */ | |
14 Map<Uri, LibraryMirror> get libraries; | |
15 | 10 |
16 /** | 11 abstract class DeclarationSourceMirror implements DeclarationMirror { |
17 * Returns an iterable of all libraries in the mirror system whose library | |
18 * name is [libraryName]. | |
19 */ | |
20 LibraryMirror findLibrary(String libraryName) { | |
21 return libraries.values.singleWhere( | |
22 (library) => library.simpleName == libraryName); | |
23 } | |
24 | |
25 /** | |
26 * A mirror on the [:dynamic:] type. | |
27 */ | |
28 TypeMirror get dynamicType; | |
29 | |
30 /** | |
31 * A mirror on the [:void:] type. | |
32 */ | |
33 TypeMirror get voidType; | |
34 } | |
35 | |
36 | |
37 /** | |
38 * An entity in the mirror system. | |
39 */ | |
40 abstract class Mirror { | |
41 static const String UNARY_MINUS = 'unary-'; | |
42 | |
43 // TODO(johnniwinther): Do we need this on all mirrors? | |
44 /** | |
45 * Returns the mirror system which contains this mirror. | |
46 */ | |
47 MirrorSystem get mirrors; | |
48 } | |
49 | |
50 abstract class DeclarationMirror implements Mirror { | |
51 /** | |
52 * The simple name of the entity. The simple name is unique within the | |
53 * scope of the entity declaration. | |
54 * | |
55 * The simple name is in most cases the declared single identifier name of | |
56 * the entity, such as 'method' for a method [:void method() {...}:]. For an | |
57 * unnamed constructor for [:class Foo:] the simple name is ''. For a | |
58 * constructor for [:class Foo:] named 'named' the simple name is 'named'. | |
59 * For a property [:foo:] the simple name of the getter method is 'foo' and | |
60 * the simple name of the setter is 'foo='. For operators the simple name is | |
61 * the operator itself, for example '+' for [:operator +:]. | |
62 * | |
63 * The simple name for the unary minus operator is [Mirror.UNARY_MINUS]. | |
64 */ | |
65 String get simpleName; | |
66 | |
67 /// Returns `true` if the name of this declaration is generated by the | 12 /// Returns `true` if the name of this declaration is generated by the |
68 /// provider of the mirror system. | 13 /// provider of the mirror system. |
69 bool get isNameSynthetic; | 14 bool get isNameSynthetic; |
70 | 15 |
71 /** | 16 /** |
72 * Returns the name of this entity qualified by is enclosing context. For | |
73 * instance, the qualified name of a method 'method' in class 'Class' in | |
74 * library 'library' is 'library.Class.method'. | |
75 */ | |
76 String get qualifiedName; | |
77 | |
78 /** | |
79 * The source location of this Dart language entity. | |
80 */ | |
81 SourceLocation get location; | |
82 | |
83 /** | |
84 * A mirror on the owner of this function. This is the declaration immediately | |
85 * surrounding the reflectee. | |
86 * | |
87 * Note that for libraries, the owner will be [:null:]. | |
88 */ | |
89 DeclarationMirror get owner; | |
90 | |
91 /** | |
92 * Is this declaration private? | |
93 * | |
94 * Note that for libraries, this will be [:false:]. | |
95 */ | |
96 bool get isPrivate; | |
97 | |
98 /** | |
99 * Is this declaration top-level? | |
100 * | |
101 * This is defined to be equivalent to: | |
102 * [:mirror.owner != null && mirror.owner is LibraryMirror:] | |
103 */ | |
104 bool get isTopLevel; | |
105 | |
106 /** | |
107 * A list of the metadata associated with this declaration. | |
108 */ | |
109 List<InstanceMirror> get metadata; | |
110 | |
111 /** | |
112 * Looks up [name] in the scope of this declaration. | 17 * Looks up [name] in the scope of this declaration. |
113 * | 18 * |
114 * [name] may be either a single identifier, like 'foo', or of the | 19 * [name] may be either a single identifier, like 'foo', or of the |
115 * a prefixed identifier, like 'foo.bar', where 'foo' must be a prefix. | 20 * a prefixed identifier, like 'foo.bar', where 'foo' must be a prefix. |
116 * For methods and constructors, the scope includes the parameters. For | 21 * For methods and constructors, the scope includes the parameters. For |
117 * classes and typedefs, the scope includes the type variables. | 22 * classes and typedefs, the scope includes the type variables. |
118 * For classes and class members, the scope includes inherited members. | 23 * For classes and class members, the scope includes inherited members. |
119 * | 24 * |
120 * See also: | 25 * See also: |
121 * | 26 * |
122 * * [Lexical Scope](https://www.dartlang.org/docs/dart-up-and-running/content
s/ch02.html#ch02-lexical-scope) | 27 * * [Lexical Scope](https://www.dartlang.org/docs/dart-up-and-running/content
s/ch02.html#ch02-lexical-scope) |
123 * in Dart Up and Running. | 28 * in Dart Up and Running. |
124 * * [Lexical Scoping](http://www.dartlang.org/docs/spec/latest/dart-language-
specification.html#h.jb82efuudrc5) | 29 * * [Lexical Scoping](http://www.dartlang.org/docs/spec/latest/dart-language-
specification.html#h.jb82efuudrc5) |
125 * in the Dart Specification. | 30 * in the Dart Specification. |
126 */ | 31 */ |
127 DeclarationMirror lookupInScope(String name); | 32 DeclarationMirror lookupInScope(String name); |
128 } | 33 } |
129 | 34 |
130 abstract class ObjectMirror implements Mirror { | |
131 /** | |
132 * Invokes a getter and returns a mirror on the result. The getter | |
133 * can be the implicit getter for a field or a user-defined getter | |
134 * method. | |
135 */ | |
136 InstanceMirror getField(String fieldName); | |
137 } | |
138 | |
139 /** | |
140 * An [InstanceMirror] reflects an instance of a Dart language object. | |
141 */ | |
142 abstract class InstanceMirror implements ObjectMirror { | |
143 /** | |
144 * A mirror on the type of the reflectee. | |
145 */ | |
146 ClassMirror get type; | |
147 | |
148 /** | |
149 * Does [reflectee] contain the instance reflected by this mirror? | |
150 * This will always be true in the local case (reflecting instances | |
151 * in the same isolate), but only true in the remote case if this | |
152 * mirror reflects a simple value. | |
153 * | |
154 * A value is simple if one of the following holds: | |
155 * - the value is null | |
156 * - the value is of type [num] | |
157 * - the value is of type [bool] | |
158 * - the value is of type [String] | |
159 */ | |
160 bool get hasReflectee; | |
161 | |
162 /** | |
163 * If the [InstanceMirror] reflects an instance it is meaningful to | |
164 * have a local reference to, we provide access to the actual | |
165 * instance here. | |
166 * | |
167 * If you access [reflectee] when [hasReflectee] is false, an | |
168 * exception is thrown. | |
169 */ | |
170 get reflectee; | |
171 } | |
172 | |
173 /** | 35 /** |
174 * Specialized [InstanceMirror] used for reflection on constant lists. | 36 * Specialized [InstanceMirror] used for reflection on constant lists. |
175 */ | 37 */ |
176 abstract class ListInstanceMirror implements InstanceMirror { | 38 abstract class ListInstanceMirror implements InstanceMirror { |
177 /** | 39 /** |
178 * Returns an instance mirror of the value at [index] or throws a [RangeError] | 40 * Returns an instance mirror of the value at [index] or throws a [RangeError] |
179 * if the [index] is out of bounds. | 41 * if the [index] is out of bounds. |
180 */ | 42 */ |
181 InstanceMirror operator[](int index); | 43 InstanceMirror getElement(int index); |
182 | 44 |
183 /** | 45 /** |
184 * The number of elements in the list. | 46 * The number of elements in the list. |
185 */ | 47 */ |
186 int get length; | 48 int get length; |
187 } | 49 } |
188 | 50 |
189 /** | 51 /** |
190 * Specialized [InstanceMirror] used for reflection on constant maps. | 52 * Specialized [InstanceMirror] used for reflection on constant maps. |
191 */ | 53 */ |
192 abstract class MapInstanceMirror implements InstanceMirror { | 54 abstract class MapInstanceMirror implements InstanceMirror { |
193 /** | 55 /** |
194 * Returns a collection containing all the keys in the map. | 56 * Returns a collection containing all the keys in the map. |
195 */ | 57 */ |
196 Iterable<String> get keys; | 58 Iterable<String> get keys; |
197 | 59 |
198 /** | 60 /** |
199 * Returns an instance mirror of the value for the given key or | 61 * Returns an instance mirror of the value for the given key or |
200 * null if key is not in the map. | 62 * null if key is not in the map. |
201 */ | 63 */ |
202 InstanceMirror operator[](String key); | 64 InstanceMirror getValue(String key); |
203 | 65 |
204 /** | 66 /** |
205 * The number of {key, value} pairs in the map. | 67 * The number of {key, value} pairs in the map. |
206 */ | 68 */ |
207 int get length; | 69 int get length; |
208 } | 70 } |
209 | 71 |
210 /** | 72 /** |
211 * Specialized [InstanceMirror] used for reflection on type constants. | 73 * Specialized [InstanceMirror] used for reflection on type constants. |
212 */ | 74 */ |
(...skipping 25 matching lines...) Expand all Loading... |
238 /** | 100 /** |
239 * Is [:true:] if this comment is a documentation comment. | 101 * Is [:true:] if this comment is a documentation comment. |
240 * | 102 * |
241 * That is, that the comment is either enclosed in [: /** ... */ :] or starts | 103 * That is, that the comment is either enclosed in [: /** ... */ :] or starts |
242 * with [: /// :]. | 104 * with [: /// :]. |
243 */ | 105 */ |
244 bool get isDocComment; | 106 bool get isDocComment; |
245 } | 107 } |
246 | 108 |
247 /** | 109 /** |
248 * Common interface for classes and libraries. | |
249 */ | |
250 abstract class ContainerMirror implements Mirror { | |
251 | |
252 /** | |
253 * An immutable map from from names to mirrors for all members in this | |
254 * container. | |
255 */ | |
256 Map<String, MemberMirror> get members; | |
257 } | |
258 | |
259 /** | |
260 * A library. | 110 * A library. |
261 */ | 111 */ |
262 abstract class LibraryMirror implements ContainerMirror, DeclarationMirror { | 112 abstract class LibrarySourceMirror |
263 /** | 113 implements DeclarationSourceMirror, LibraryMirror { |
264 * An immutable map from from names to mirrors for all members in this | |
265 * library. | |
266 * | |
267 * The members of a library are its top-level classes, functions, variables, | |
268 * getters, and setters. | |
269 */ | |
270 Map<String, MemberMirror> get members; | |
271 | |
272 /** | |
273 * An immutable map from names to mirrors for all class | |
274 * declarations in this library. | |
275 */ | |
276 Map<String, ClassMirror> get classes; | |
277 | |
278 /** | |
279 * An immutable map from names to mirrors for all function, getter, | |
280 * and setter declarations in this library. | |
281 */ | |
282 Map<String, MethodMirror> get functions; | |
283 | |
284 /** | |
285 * An immutable map from names to mirrors for all getter | |
286 * declarations in this library. | |
287 */ | |
288 Map<String, MethodMirror> get getters; | |
289 | |
290 /** | |
291 * An immutable map from names to mirrors for all setter | |
292 * declarations in this library. | |
293 */ | |
294 Map<String, MethodMirror> get setters; | |
295 | |
296 /** | |
297 * An immutable map from names to mirrors for all variable | |
298 * declarations in this library. | |
299 */ | |
300 Map<String, VariableMirror> get variables; | |
301 | |
302 /** | |
303 * Returns the canonical URI for this library. | |
304 */ | |
305 Uri get uri; | |
306 | |
307 /** | 114 /** |
308 * Returns a list of the imports and exports in this library; | 115 * Returns a list of the imports and exports in this library; |
309 */ | 116 */ |
310 List<LibraryDependencyMirror> get libraryDependencies; | 117 List<LibraryDependencyMirror> get libraryDependencies; |
311 } | 118 } |
312 | 119 |
313 /// A mirror on an import or export declaration. | 120 /// A mirror on an import or export declaration. |
314 abstract class LibraryDependencyMirror { | 121 abstract class LibraryDependencyMirror { |
315 /// Is `true` if this dependency is an import. | 122 /// Is `true` if this dependency is an import. |
316 bool get isImport; | 123 bool get isImport; |
(...skipping 27 matching lines...) Expand all Loading... |
344 /// Is `true` if this is a 'show' combinator. | 151 /// Is `true` if this is a 'show' combinator. |
345 bool get isShow; | 152 bool get isShow; |
346 | 153 |
347 /// Is `true` if this is a 'hide' combinator. | 154 /// Is `true` if this is a 'hide' combinator. |
348 bool get isHide; | 155 bool get isHide; |
349 } | 156 } |
350 | 157 |
351 /** | 158 /** |
352 * Common interface for classes, interfaces, typedefs and type variables. | 159 * Common interface for classes, interfaces, typedefs and type variables. |
353 */ | 160 */ |
354 abstract class TypeMirror implements DeclarationMirror { | 161 abstract class TypeSourceMirror implements DeclarationSourceMirror, TypeMirror { |
355 /** | 162 /// Returns `true` is this is a mirror on the void type. |
356 * Returns the library in which this member resides. | 163 bool get isVoid; |
357 */ | |
358 LibraryMirror get library; | |
359 | 164 |
360 /** | 165 /// Returns `true` is this is a mirror on the dynamic type. |
361 * Is [:true:] iff this type is the [:Object:] type. | |
362 */ | |
363 bool get isObject; | |
364 | |
365 /** | |
366 * Is [:true:] iff this type is the [:dynamic:] type. | |
367 */ | |
368 bool get isDynamic; | 166 bool get isDynamic; |
369 | 167 |
370 /** | 168 /// Create a type mirror on the instantiation of the declaration of this type |
371 * Is [:true:] iff this type is the void type. | 169 /// with [typeArguments] as type arguments. |
372 */ | 170 TypeMirror createInstantiation(List<TypeMirror> typeArguments); |
373 bool get isVoid; | |
374 | |
375 /** | |
376 * Is [:true:] iff this type is a type variable. | |
377 */ | |
378 bool get isTypeVariable; | |
379 | |
380 /** | |
381 * Is [:true:] iff this type is a typedef. | |
382 */ | |
383 bool get isTypedef; | |
384 | |
385 /** | |
386 * Is [:true:] iff this type is a function type. | |
387 */ | |
388 bool get isFunction; | |
389 } | 171 } |
390 | 172 |
391 /** | 173 /** |
392 * A class or interface type. | 174 * A class or interface type. |
393 */ | 175 */ |
394 abstract class ClassMirror implements TypeMirror, ContainerMirror { | 176 abstract class ClassSourceMirror implements TypeSourceMirror, ClassMirror { |
395 /** | |
396 * A mirror on the original declaration of this type. | |
397 * | |
398 * For most classes, they are their own original declaration. For | |
399 * generic classes, however, there is a distinction between the | |
400 * original class declaration, which has unbound type variables, and | |
401 * the instantiations of generic classes, which have bound type | |
402 * variables. | |
403 */ | |
404 ClassMirror get originalDeclaration; | |
405 | |
406 /** | |
407 * Returns the super class of this type, or null if this type is [Object] or a | |
408 * typedef. | |
409 */ | |
410 ClassMirror get superclass; | |
411 | |
412 /** | |
413 * Returns a list of the interfaces directly implemented by this type. | |
414 */ | |
415 List<ClassMirror> get superinterfaces; | |
416 | |
417 /** | |
418 * The mixin of this class. If this class is the result of a mixin application | |
419 * of the form S with M, returns a class mirror on M. Otherwise return the | |
420 * class mirror itself. | |
421 */ | |
422 ClassMirror get mixin; | |
423 | |
424 /** | |
425 * Is [:true:] iff this type is a class. | |
426 */ | |
427 bool get isClass; | |
428 | |
429 /** | |
430 * Is this the original declaration of this type? | |
431 * | |
432 * For most classes, they are their own original declaration. For | |
433 * generic classes, however, there is a distinction between the | |
434 * original class declaration, which has unbound type variables, and | |
435 * the instantiations of generic classes, which have bound type | |
436 * variables. | |
437 */ | |
438 bool get isOriginalDeclaration; | |
439 | |
440 /** | 177 /** |
441 * Is [:true:] if this class is declared abstract. | 178 * Is [:true:] if this class is declared abstract. |
442 */ | 179 */ |
443 bool get isAbstract; | 180 bool get isAbstract; |
444 | |
445 /** | |
446 * Returns a list of the type arguments for this type. | |
447 */ | |
448 List<TypeMirror> get typeArguments; | |
449 | |
450 /** | |
451 * Returns the list of type variables for this type. | |
452 */ | |
453 List<TypeVariableMirror> get typeVariables; | |
454 | |
455 /** | |
456 * An immutable map from from names to mirrors for all members of | |
457 * this type. | |
458 * | |
459 * The members of a type are its methods, fields, getters, and | |
460 * setters. Note that constructors and type variables are not | |
461 * considered to be members of a type. | |
462 * | |
463 * This does not include inherited members. | |
464 */ | |
465 Map<String, MemberMirror> get members; | |
466 | |
467 /** | |
468 * An immutable map from names to mirrors for all method, | |
469 * declarations for this type. This does not include getters and | |
470 * setters. | |
471 */ | |
472 Map<String, MethodMirror> get methods; | |
473 | |
474 /** | |
475 * An immutable map from names to mirrors for all getter | |
476 * declarations for this type. | |
477 */ | |
478 Map<String, MethodMirror> get getters; | |
479 | |
480 /** | |
481 * An immutable map from names to mirrors for all setter | |
482 * declarations for this type. | |
483 */ | |
484 Map<String, MethodMirror> get setters; | |
485 | |
486 /** | |
487 * An immutable map from names to mirrors for all variable | |
488 * declarations for this type. | |
489 */ | |
490 Map<String, VariableMirror> get variables; | |
491 | |
492 /** | |
493 * An immutable map from names to mirrors for all constructor | |
494 * declarations for this type. | |
495 */ | |
496 Map<String, MethodMirror> get constructors; | |
497 } | |
498 | |
499 /** | |
500 * A type parameter as declared on a generic type. | |
501 */ | |
502 abstract class TypeVariableMirror implements TypeMirror { | |
503 /** | |
504 * Returns the bound of the type parameter. | |
505 */ | |
506 TypeMirror get upperBound; | |
507 } | |
508 | |
509 /** | |
510 * A function type. | |
511 */ | |
512 abstract class FunctionTypeMirror implements ClassMirror { | |
513 /** | |
514 * Returns the return type of this function type. | |
515 */ | |
516 TypeMirror get returnType; | |
517 | |
518 /** | |
519 * Returns the parameters for this function type. | |
520 */ | |
521 List<ParameterMirror> get parameters; | |
522 | |
523 /** | |
524 * Returns the call method for this function type. | |
525 */ | |
526 MethodMirror get callMethod; | |
527 } | |
528 | |
529 /** | |
530 * A typedef. | |
531 */ | |
532 abstract class TypedefMirror implements ClassMirror { | |
533 /** | |
534 * The defining type for this typedef. | |
535 * | |
536 * For instance [:void f(int):] for a [:typedef void f(int):]. | |
537 */ | |
538 TypeMirror get value; | |
539 } | |
540 | |
541 /** | |
542 * A member of a type, i.e. a field, method or constructor. | |
543 */ | |
544 abstract class MemberMirror implements DeclarationMirror { | |
545 /** | |
546 * Is this member a constructor? | |
547 */ | |
548 bool get isConstructor; | |
549 | |
550 /** | |
551 * Is this member a variable? | |
552 * | |
553 * This is [:false:] for locals. | |
554 */ | |
555 bool get isVariable; | |
556 | |
557 /** | |
558 * Is this member a method?. | |
559 * | |
560 * This is [:false:] for constructors. | |
561 */ | |
562 bool get isMethod; | |
563 | |
564 /** | |
565 * Is this member declared static? | |
566 */ | |
567 bool get isStatic; | |
568 | |
569 /** | |
570 * Is this member a parameter? | |
571 */ | |
572 bool get isParameter; | |
573 } | |
574 | |
575 /** | |
576 * A field. | |
577 */ | |
578 abstract class VariableMirror implements MemberMirror { | |
579 | |
580 /** | |
581 * Returns true if this field is final. | |
582 */ | |
583 bool get isFinal; | |
584 | |
585 /** | |
586 * Returns true if this field is const. | |
587 */ | |
588 bool get isConst; | |
589 | |
590 /** | |
591 * Returns the type of this field. | |
592 */ | |
593 TypeMirror get type; | |
594 } | |
595 | |
596 /** | |
597 * Common interface constructors and methods, including factories, getters and | |
598 * setters. | |
599 */ | |
600 abstract class MethodMirror implements MemberMirror { | |
601 /** | |
602 * Returns the list of parameters for this method. | |
603 */ | |
604 List<ParameterMirror> get parameters; | |
605 | |
606 /** | |
607 * Returns the return type of this method. | |
608 */ | |
609 TypeMirror get returnType; | |
610 | |
611 /** | |
612 * Is the reflectee abstract? | |
613 */ | |
614 bool get isAbstract; | |
615 | |
616 /** | |
617 * Is the reflectee a regular function or method? | |
618 * | |
619 * A function or method is regular if it is not a getter, setter, or | |
620 * constructor. Note that operators, by this definition, are | |
621 * regular methods. | |
622 */ | |
623 bool get isRegularMethod; | |
624 | |
625 /** | |
626 * Is the reflectee a const constructor? | |
627 */ | |
628 bool get isConstConstructor; | |
629 | |
630 /** | |
631 * Is the reflectee a generative constructor? | |
632 */ | |
633 bool get isGenerativeConstructor; | |
634 | |
635 /** | |
636 * Is the reflectee a redirecting constructor? | |
637 */ | |
638 bool get isRedirectingConstructor; | |
639 | |
640 /** | |
641 * Is the reflectee a factory constructor? | |
642 */ | |
643 bool get isFactoryConstructor; | |
644 | |
645 /** | |
646 * Is [:true:] if this method is a getter method. | |
647 */ | |
648 bool get isGetter; | |
649 | |
650 /** | |
651 * Is [:true:] if this method is a setter method. | |
652 */ | |
653 bool get isSetter; | |
654 | |
655 /** | |
656 * Is [:true:] if this method is an operator method. | |
657 */ | |
658 bool get isOperator; | |
659 } | 181 } |
660 | 182 |
661 /** | 183 /** |
662 * A formal parameter. | 184 * A formal parameter. |
663 */ | 185 */ |
664 abstract class ParameterMirror implements VariableMirror { | 186 abstract class ParameterSourceMirror implements ParameterMirror { |
665 /** | |
666 * Returns the type of this parameter. | |
667 */ | |
668 TypeMirror get type; | |
669 | |
670 /** | |
671 * Returns the default value for this parameter. | |
672 */ | |
673 String get defaultValue; | |
674 | |
675 /** | |
676 * Does this parameter have a default value? | |
677 */ | |
678 bool get hasDefaultValue; | |
679 | |
680 /** | |
681 * Is this parameter optional? | |
682 */ | |
683 bool get isOptional; | |
684 | |
685 /** | |
686 * Is this parameter named? | |
687 */ | |
688 bool get isNamed; | |
689 | |
690 /** | 187 /** |
691 * Returns [:true:] iff this parameter is an initializing formal of a | 188 * Returns [:true:] iff this parameter is an initializing formal of a |
692 * constructor. That is, if it is of the form [:this.x:] where [:x:] is a | 189 * constructor. That is, if it is of the form [:this.x:] where [:x:] is a |
693 * field. | 190 * field. |
694 */ | 191 */ |
695 bool get isInitializingFormal; | 192 bool get isInitializingFormal; |
696 | 193 |
697 /** | 194 /** |
698 * Returns the initialized field, if this parameter is an initializing formal. | 195 * Returns the initialized field, if this parameter is an initializing formal. |
699 */ | 196 */ |
700 VariableMirror get initializedField; | 197 VariableMirror get initializedField; |
701 } | 198 } |
702 | 199 |
703 /** | 200 /** |
704 * A [SourceLocation] describes the span of an entity in Dart source code. | 201 * A [SourceLocation] describes the span of an entity in Dart source code. |
705 * A [SourceLocation] with a non-zero [length] should be the minimum span that | 202 * A [SourceLocation] with a non-zero [length] should be the minimum span that |
706 * encloses the declaration of the mirrored entity. | 203 * encloses the declaration of the mirrored entity. |
707 */ | 204 */ |
708 abstract class SourceLocation { | 205 abstract class SourceLocation implements api.SourceLocation { |
709 /** | 206 /** |
710 * The 1-based line number for this source location. | 207 * The 1-based line number for this source location. |
711 * | 208 * |
712 * A value of 0 means that the line number is unknown. | 209 * A value of 0 means that the line number is unknown. |
713 */ | 210 */ |
714 int get line; | 211 int get line; |
715 | 212 |
716 /** | 213 /** |
717 * The 1-based column number for this source location. | 214 * The 1-based column number for this source location. |
718 * | 215 * |
(...skipping 24 matching lines...) Expand all Loading... |
743 /** | 240 /** |
744 * Returns the URI where the source originated. | 241 * Returns the URI where the source originated. |
745 */ | 242 */ |
746 Uri get sourceUri; | 243 Uri get sourceUri; |
747 | 244 |
748 /** | 245 /** |
749 * Returns the text of this source. | 246 * Returns the text of this source. |
750 */ | 247 */ |
751 String get sourceText; | 248 String get sourceText; |
752 } | 249 } |
OLD | NEW |