LibraryMirror abstract#
A LibraryMirror reflects a Dart language library, providing access to the variables, functions, and classes of the library.
Implemented types
Constructors#
LibraryMirror()#
Properties#
declarations no setter#
Returns an immutable map of the declarations actually given in the library.
This map includes all regular methods, getters, setters, fields, classes and typedefs actually declared in the library. The map is keyed by the simple names of the declarations.
Implementation
Map<Symbol, DeclarationMirror> get declarations;
hashCode no setter inherited#
The hash code for this object.
A hash code is a single integer which represents the state of the object that affects operator == comparisons.
All objects have hash codes. The default hash code implemented by Object represents only the identity of the object, the same way as the default operator == implementation only considers objects equal if they are identical (see identityHashCode).
If operator == is overridden to use the object state instead, the hash code must also be changed to represent that state, otherwise the object cannot be used in hash based data structures like the default Set and Map implementations.
Hash codes must be the same for objects that are equal to each other according to operator ==. The hash code of an object should only change if the object changes in a way that affects equality. There are no further requirements for the hash codes. They need not be consistent between executions of the same program and there are no distribution guarantees.
Objects that are not equal are allowed to have the same hash code. It is even technically allowed that all instances have the same hash code, but if clashes happen too often, it may reduce the efficiency of hash-based data structures like HashSet or HashMap.
If a subclass overrides hashCode, it should override the operator == operator as well to maintain consistency.
Inherited from Object.
Implementation
external int get hashCode;
isPrivate no setter inherited#
Whether this declaration is library private.
Always returns false for a library declaration,
otherwise returns true if the declaration's name starts with an
underscore character (_), and false if it doesn't.
Inherited from DeclarationMirror.
Implementation
bool get isPrivate;
isTopLevel no setter inherited#
Whether this declaration is top-level.
A declaration is considered top-level if its owner is a LibraryMirror.
Inherited from DeclarationMirror.
Implementation
bool get isTopLevel;
libraryDependencies no setter#
Returns a list of the imports and exports in this library;
Implementation
List<LibraryDependencyMirror> get libraryDependencies;
location no setter inherited#
The source location of this Dart language entity, or null if the
entity is synthetic.
If the reflectee is a variable, the returned location gives the position of the variable name at its point of declaration.
If the reflectee is a library, class, typedef, function or type variable with associated metadata, the returned location gives the position of the first metadata declaration associated with the reflectee.
Otherwise:
If the reflectee is a library, the returned location gives the position of the keyword 'library' at the reflectee's point of declaration, if the reflectee is a named library, or the first character of the first line in the compilation unit defining the reflectee if the reflectee is anonymous.
If the reflectee is an abstract class, the returned location gives the position of the keyword 'abstract' at the reflectee's point of declaration. Otherwise, if the reflectee is a class, the returned location gives the position of the keyword 'class' at the reflectee's point of declaration.
If the reflectee is a typedef the returned location gives the position of the of the keyword 'typedef' at the reflectee's point of declaration.
If the reflectee is a function with a declared return type, the returned location gives the position of the function's return type at the reflectee's point of declaration. Otherwise. the returned location gives the position of the function's name at the reflectee's point of declaration.
This operation is optional and may throw an UnsupportedError.
Inherited from DeclarationMirror.
Implementation
SourceLocation? get location;
metadata no setter inherited#
A list of the metadata associated with this declaration.
Let D be the declaration this mirror reflects. If D is decorated with annotations A1, ..., An where n > 0, then for each annotation Ai associated with D, 1 <= i <= n, let ci be the constant object specified by Ai. Then this method returns a list whose members are instance mirrors on c1, ..., cn. If no annotations are associated with D, then an empty list is returned.
If evaluating any of c1, ..., cn would cause a compilation error the effect is the same as if a non-reflective compilation error had been encountered.
Inherited from DeclarationMirror.
Implementation
List<InstanceMirror> get metadata;
owner no setter inherited#
A mirror on the owner of this Dart language entity.
The owner is the declaration immediately surrounding the reflectee:
- For a library, the owner is
null. - For a class declaration, typedef or top level function or variable, the owner is the enclosing library.
- For a mixin application
S with M, the owner is the owner ofM. - For a constructor, the owner is the immediately enclosing class.
-
For a method, instance variable or a static variable, the owner is the
immediately enclosing class, unless the class is a mixin application
S with M, in which case the owner isM. Note thatMmay be an invocation of a generic. - For a parameter, local variable or local function the owner is the immediately enclosing function.
Inherited from DeclarationMirror.
Implementation
DeclarationMirror? get owner;
qualifiedName no setter inherited#
The fully-qualified name for this Dart language entity.
This name is qualified by the name of the owner. For instance, the qualified name of a method 'method' in class 'Class' in library 'library' is 'library.Class.method'.
Returns a Symbol constructed from a string representing the fully qualified name of the reflectee. Let o be the owner of this mirror, let r be the reflectee of this mirror, let p be the fully qualified name of the reflectee of o, and let s be the simple name of r computed by simpleName. The fully qualified name of r is the concatenation of p, '.', and s.
Because an isolate can contain more than one library with the same name (at different URIs), a fully-qualified name does not uniquely identify any language entity.
Inherited from DeclarationMirror.
Implementation
Symbol get qualifiedName;
runtimeType no setter inherited#
A representation of the runtime type of the object.
Inherited from Object.
Implementation
external Type get runtimeType;
simpleName no setter inherited#
The simple name for this Dart language entity.
The simple name is in most cases the identifier name of the entity,
such as 'myMethod' for a method, void myMethod() {...} or 'mylibrary'
for a library 'mylibrary'; declaration.
Inherited from DeclarationMirror.
Implementation
Symbol get simpleName;
uri no setter#
The absolute uri of the library.
Implementation
Uri get uri;
Methods#
delegate() inherited#
Performs invocation on the reflectee of this ObjectMirror.
Equivalent to
if (invocation.isGetter) {
return this.getField(invocation.memberName).reflectee;
} else if (invocation.isSetter) {
return this.setField(invocation.memberName,
invocation.positionalArguments[0]).reflectee;
} else {
return this.invoke(invocation.memberName,
invocation.positionalArguments,
invocation.namedArguments).reflectee;
}
Inherited from ObjectMirror.
Implementation
delegate(Invocation invocation);
getField() inherited#
Invokes a getter and returns a mirror on the result.
The getter can be the implicit getter for a field or a user-defined getter method.
Let o be the object reflected by this mirror,
let f be the simple name of the getter denoted by fieldName.
Then this method will perform the getter invocation o.f in a scope that has access to the private members of o (if o is a class or library) or the private members of the class of o (otherwise).
If this mirror is an InstanceMirror, and
fieldName denotes an instance
method on its reflectee, the result of the invocation is an instance
mirror on a closure corresponding to that method.
If this mirror is a LibraryMirror, and
fieldName denotes a top-level
method in the corresponding library, the result of the invocation is an
instance mirror on a closure corresponding to that method.
If this mirror is a ClassMirror, and
fieldName denotes a static method
in the corresponding class, the result of the invocation is an instance
mirror on a closure corresponding to that method.
If the invocation returns a result r, this method returns the result of calling reflect(r).
If the invocation causes a compilation error, the effect is the same as if a non-reflective compilation error had been encountered.
If the invocation throws an exception e (that it does not catch), this method throws e.
Inherited from ObjectMirror.
Implementation
// TODO(ahe): Remove stuff about scope and private members. [fieldName] is a
// capability giving access to private members.
InstanceMirror getField(Symbol fieldName);
invoke() inherited#
Invokes the named function and returns a mirror on the result.
Let o be the object reflected by this mirror, let f be the simple name
of the member denoted by memberName, let a1, ..., an be the elements
of positionalArguments, let k1, ..., km be the identifiers denoted by
the elements of namedArguments.keys, and let v1, ..., vm
be the
elements of namedArguments.values. Then this method will perform the
method invocation o.f(a1, ..., an, k1: v1, ..., km: vm) in a scope that
has access to the private members of o (if o is a class or library) or
the private members of the class of o (otherwise).
If the invocation returns a result r, this method returns the result of calling reflect(r).
If the invocation causes a compilation error the effect is the same as if a non-reflective compilation error had been encountered.
If the invocation throws an exception e (that it does not catch), this method throws e.
Inherited from ObjectMirror.
Implementation
InstanceMirror invoke(
Symbol memberName,
List<dynamic> positionalArguments, [
Map<Symbol, dynamic> namedArguments = const <Symbol, dynamic>{},
]);
noSuchMethod() inherited#
Invoked when a nonexistent method or property is accessed.
A dynamic member invocation can attempt to call a member which doesn't exist on the receiving object. Example:
dynamic object = 1;
object.add(42); // Statically allowed, run-time error
This invalid code will invoke the noSuchMethod method
of the integer 1 with an Invocation
representing the
.add(42) call and arguments (which then throws).
Classes can override noSuchMethod to provide custom behavior for such invalid dynamic invocations.
A class with a non-default noSuchMethod invocation can also omit implementations for members of its interface. Example:
class MockList<T> implements List<T> {
noSuchMethod(Invocation invocation) {
log(invocation);
super.noSuchMethod(invocation); // Will throw.
}
}
void main() {
MockList().add(42);
}
This code has no compile-time warnings or errors even though
the MockList class has no concrete implementation of
any of the List interface methods.
Calls to List methods are forwarded to noSuchMethod,
so this code will log an invocation similar to
Invocation.method(#add, [42])
and then throw.
If a value is returned from noSuchMethod,
it becomes the result of the original invocation.
If the value is not of a type that can be returned by the original
invocation, a type error occurs at the invocation.
The default behavior is to throw a NoSuchMethodError.
Inherited from Object.
Implementation
@pragma("vm:entry-point")
@pragma("wasm:entry-point")
external dynamic noSuchMethod(Invocation invocation);
setField() inherited#
Invokes a setter and returns a mirror on the result.
The setter may be either the implicit setter for a non-final field or a user-defined setter method.
Let o be the object reflected by this mirror,
let f be the simple name of the getter denoted by fieldName,
and let a be the object bound to value.
Then this method will perform the setter invocation o.f = a in a scope that has access to the private members of o (if o is a class or library) or the private members of the class of o (otherwise).
If the invocation returns a result r, this method returns the result of
calling reflect(value).
If the invocation causes a compilation error, the effect is the same as if a non-reflective compilation error had been encountered.
If the invocation throws an exception e (that it does not catch) this method throws e.
Inherited from ObjectMirror.
Implementation
InstanceMirror setField(Symbol fieldName, dynamic value);
toString() inherited#
A string representation of this object.
Some classes have a default textual representation,
often paired with a static parse function (like int.parse).
These classes will provide the textual representation as
their string representation.
Other classes have no meaningful textual representation
that a program will care about.
Such classes will typically override toString to provide
useful information when inspecting the object,
mainly for debugging or logging.
Inherited from Object.
Implementation
external String toString();
Operators#
operator ==() override#
Whether this mirror is equal to other.
The equality holds if and only if
otheris a mirror of the same kind, and-
The library being reflected by this mirror and the library being
reflected by
otherare the same library in the same isolate.
Implementation
bool operator ==(Object other);