Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(693)

Unified Diff: sdk/lib/mirrors/mirrors.dart

Issue 11419032: Switch libraries to using new tags. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated to tip of tree. Changed library names to dart.x Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/mirrors/mirror_classes.dart ('k') | sdk/lib/scalarlist/byte_arrays.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/mirrors/mirrors.dart
diff --git a/sdk/lib/mirrors/mirrors.dart b/sdk/lib/mirrors/mirrors.dart
index 303cec4ad7ea0c92f3c5a4d93af9399d99610128..3bd18100bc3f3fd961d7ace0964f52f41aff2986 100644
--- a/sdk/lib/mirrors/mirrors.dart
+++ b/sdk/lib/mirrors/mirrors.dart
@@ -3,743 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
// The dart:mirrors library provides reflective access for Dart program.
-//
-// For the purposes of the mirrors library, we adopt a naming
-// convention with respect to getters and setters. Specifically, for
-// some variable or field...
-//
-// var myField;
-//
-// ...the getter is named 'myField' and the setter is named
-// 'myField='. This allows us to assign unique names to getters and
-// setters for the purposes of member lookup.
-// #library("mirrors");
+library dart.mirrors;
-/**
- * A [MirrorSystem] is the main interface used to reflect on a set of
- * associated libraries.
- *
- * At runtime each running isolate has a distinct [MirrorSystem].
- *
- * It is also possible to have a [MirrorSystem] which represents a set
- * of libraries which are not running -- perhaps at compile-time. In
- * this case, all available reflective functionality would be
- * supported, but runtime functionality (such as invoking a function
- * or inspecting the contents of a variable) would fail dynamically.
- */
-abstract class MirrorSystem {
- /**
- * An immutable map from from library names to mirrors for all
- * libraries known to this mirror system.
- */
- Map<String, LibraryMirror> get libraries;
-
- /**
- * A mirror on the isolate associated with this [MirrorSystem].
- * This may be null if this mirror system is not running.
- */
- IsolateMirror get isolate;
-
- /**
- * A mirror on the [:dynamic:] type.
- */
- TypeMirror get dynamicType;
-
- /**
- * A mirror on the [:void:] type.
- */
- TypeMirror get voidType;
-}
-
-/**
- * Returns a [MirrorSystem] for the current isolate.
- */
-MirrorSystem currentMirrorSystem() {
- return _Mirrors.currentMirrorSystem();
-}
-
-/**
- * Creates a [MirrorSystem] for the isolate which is listening on
- * the [SendPort].
- */
-Future<MirrorSystem> mirrorSystemOf(SendPort port) {
- return _Mirrors.mirrorSystemOf(port);
-}
-
-/**
- * Returns an [InstanceMirror] for some Dart language object.
- *
- * This only works if this mirror system is associated with the
- * current running isolate.
- */
-InstanceMirror reflect(Object reflectee) {
- return _Mirrors.reflect(reflectee);
-}
-
-/**
- * A [Mirror] reflects some Dart language entity.
- *
- * Every [Mirror] originates from some [MirrorSystem].
- */
-abstract class Mirror {
- /**
- * The [MirrorSystem] that contains this mirror.
- */
- MirrorSystem get mirrors;
-}
-
-/**
- * An [IsolateMirror] reflects an isolate.
- */
-abstract class IsolateMirror implements Mirror {
- /**
- * A unique name used to refer to an isolate in debugging messages.
- */
- String get debugName;
-
- /**
- * Does this mirror reflect the currently running isolate?
- */
- bool get isCurrent;
-
- /**
- * A mirror on the root library for this isolate.
- */
- LibraryMirror get rootLibrary;
-}
-
-/**
- * A [DeclarationMirror] reflects some entity declared in a Dart program.
- */
-abstract class DeclarationMirror implements Mirror {
- /**
- * The simple name for this Dart language entity.
- *
- * The simple name is in most cases the the identifier name of the
- * entity, such as 'method' for a method [:void method() {...}:] or
- * 'mylibrary' for a [:#library('mylibrary');:] declaration.
- */
- String get simpleName;
-
- /**
- * 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'.
- *
- * TODO(turnidge): Specify whether this name is unique. Currently
- * this is a gray area due to lack of clarity over whether library
- * names are unique.
- */
- String get qualifiedName;
-
- /**
- * A mirror on the owner of this function. This is the declaration
- * immediately surrounding the reflectee.
- *
- * Note that for libraries, the owner will be [:null:].
- */
- DeclarationMirror get owner;
-
- /**
- * Is this declaration private?
- *
- * Note that for libraries, this will be [:false:].
- */
- bool get isPrivate;
-
- /**
- * Is this declaration top-level?
- *
- * This is defined to be equivalent to:
- * [:mirror.owner != null && mirror.owner is LibraryMirror:]
- */
- bool get isTopLevel;
-
- /**
- * The source location of this Dart language entity.
- */
- SourceLocation get location;
-}
-
-/**
- * An [ObjectMirror] is a common superinterface of [InstanceMirror],
- * [ClassMirror], and [LibraryMirror] that represents their shared
- * functionality.
- *
- * For the purposes of the mirrors library, these types are all
- * object-like, in that they support method invocation and field
- * access. Real Dart objects are represented by the [InstanceMirror]
- * type.
- *
- * See [InstanceMirror], [ClassMirror], and [LibraryMirror].
- */
-abstract class ObjectMirror implements Mirror {
- /**
- * Invokes the named function and returns a mirror on the result.
- *
- * TODO(turnidge): Properly document.
- * TODO(turnidge): Handle ambiguous names.
- * TODO(turnidge): Handle optional & named arguments.
- */
- Future<InstanceMirror> invoke(String memberName,
- List<Object> positionalArguments,
- [Map<String,Object> namedArguments]);
-
- /**
- * 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.
- *
- * TODO(turnidge): Handle ambiguous names.
- */
- Future<InstanceMirror> getField(String fieldName);
-
- /**
- * 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.
- *
- * TODO(turnidge): Handle ambiguous names.
- */
- Future<InstanceMirror> setField(String fieldName, Object value);
-}
-
-/**
- * An [InstanceMirror] reflects an instance of a Dart language object.
- */
-abstract class InstanceMirror implements ObjectMirror {
- /**
- * A mirror on the type of the reflectee.
- */
- ClassMirror get type;
-
- /**
- * Does [reflectee] contain the instance reflected by this mirror?
- * This will always be true in the local case (reflecting instances
- * in the same isolate), but only true in the remote case if this
- * mirror reflects a simple value.
- *
- * A value is simple if one of the following holds:
- * - the value is null
- * - the value is of type [num]
- * - the value is of type [bool]
- * - the value is of type [String]
- */
- bool get hasReflectee;
-
- /**
- * If the [InstanceMirror] reflects an instance it is meaningful to
- * have a local reference to, we provide access to the actual
- * instance here.
- *
- * If you access [reflectee] when [hasReflectee] is false, an
- * exception is thrown.
- */
- get reflectee;
-}
-
-/**
- * A [ClosureMirror] reflects a closure.
- *
- * A [ClosureMirror] provides access to its captured variables and
- * provides the ability to execute its reflectee.
- */
-abstract class ClosureMirror implements InstanceMirror {
- /**
- * A mirror on the function associated with this closure.
- */
- MethodMirror get function;
-
- /**
- * The source code for this closure, if available. Otherwise null.
- *
- * TODO(turnidge): Would this just be available in function?
- */
- String get source;
-
- /**
- * Executes the closure. The arguments given in the descriptor need to
- * be InstanceMirrors or simple values.
- *
- * A value is simple if one of the following holds:
- * - the value is null
- * - the value is of type [num]
- * - the value is of type [bool]
- * - the value is of type [String]
- */
- Future<InstanceMirror> apply(List<Object> positionalArguments,
- [Map<String,Object> namedArguments]);
-
- /**
- * Looks up the value of a name in the scope of the closure. The
- * result is a mirror on that value.
- */
- Future<InstanceMirror> findInContext(String name);
-}
-
-/**
- * A [LibraryMirror] reflects a Dart language library, providing
- * access to the variables, functions, and classes of the
- * library.
- */
-abstract class LibraryMirror implements DeclarationMirror, ObjectMirror {
- /**
- * The url of the library.
- *
- * TODO(turnidge): Document where this url comes from. Will this
- * value be sensible?
- */
- String get url;
-
- /**
- * An immutable map from from names to mirrors for all members in
- * this library.
- *
- * The members of a library are its top-level classes,
- * functions, variables, getters, and setters.
- */
- Map<String, Mirror> get members;
-
- /**
- * An immutable map from names to mirrors for all class
- * declarations in this library.
- */
- Map<String, ClassMirror> get classes;
-
- /**
- * An immutable map from names to mirrors for all function, getter,
- * and setter declarations in this library.
- */
- Map<String, MethodMirror> get functions;
-
- /**
- * An immutable map from names to mirrors for all getter
- * declarations in this library.
- */
- Map<String, MethodMirror> get getters;
-
- /**
- * An immutable map from names to mirrors for all setter
- * declarations in this library.
- */
- Map<String, MethodMirror> get setters;
-
- /**
- * An immutable map from names to mirrors for all variable
- * declarations in this library.
- */
- Map<String, VariableMirror> get variables;
-}
-
-/**
- * A [TypeMirror] reflects a Dart language class, typedef
- * or type variable.
- */
-abstract class TypeMirror implements DeclarationMirror {
-}
-
-/**
- * A [ClassMirror] reflects a Dart language class.
- */
-abstract class ClassMirror implements TypeMirror, ObjectMirror {
- /**
- * A mirror on the superclass on the reflectee.
- *
- * If this type is [:Object:] or a typedef, the superClass will be
- * null.
- */
- ClassMirror get superclass;
-
- /**
- * A list of mirrors on the superinterfaces of the reflectee.
- */
- List<ClassMirror> get superinterfaces;
-
- /**
- * An immutable map from from names to mirrors for all members of
- * this type.
- *
- * The members of a type are its methods, fields, getters, and
- * setters. Note that constructors and type variables are not
- * considered to be members of a type.
- *
- * This does not include inherited members.
- */
- Map<String, Mirror> get members;
-
- /**
- * An immutable map from names to mirrors for all method,
- * declarations for this type. This does not include getters and
- * setters.
- */
- Map<String, MethodMirror> get methods;
-
- /**
- * An immutable map from names to mirrors for all getter
- * declarations for this type.
- */
- Map<String, MethodMirror> get getters;
-
- /**
- * An immutable map from names to mirrors for all setter
- * declarations for this type.
- */
- Map<String, MethodMirror> get setters;
-
- /**
- * An immutable map from names to mirrors for all variable
- * declarations for this type.
- */
- Map<String, VariableMirror> get variables;
-
- /**
- * An immutable map from names to mirrors for all constructor
- * declarations for this type.
- */
- Map<String, MethodMirror> get constructors;
-
- /**
- * An immutable map from names to mirrors for all type variables for
- * this type.
- *
- * This map preserves the order of declaration of the type variables.
- */
- Map<String, TypeVariableMirror> get typeVariables;
-
- /**
- * An immutable map from names to mirrors for all type arguments for
- * this type.
- *
- * This map preserves the order of declaration of the type variables.
- */
- Map<String, TypeMirror> get typeArguments;
-
- /**
- * Is this the original declaration of this type?
- *
- * For most classes, they are their own original declaration. For
- * generic classes, however, there is a distinction between the
- * original class declaration, which has unbound type variables, and
- * the instantiations of generic classes, which have bound type
- * variables.
- */
- bool get isOriginalDeclaration;
-
- /**
- * A mirror on the original declaration of this type.
- *
- * For most classes, they are their own original declaration. For
- * generic classes, however, there is a distinction between the
- * original class declaration, which has unbound type variables, and
- * the instantiations of generic classes, which have bound type
- * variables.
- */
- ClassMirror get originalDeclaration;
-
- /**
- * Invokes the named constructor and returns a mirror on the result.
- *
- * TODO(turnidge): Properly document.
- */
- Future<InstanceMirror> newInstance(String constructorName,
- List<Object> positionalArguments,
- [Map<String,Object> namedArguments]);
-
- /**
- * Does this mirror represent a class?
- *
- * TODO(turnidge): This functions goes away after the
- * class/interface changes.
- */
- bool get isClass;
-
- /**
- * A mirror on the default factory class or null if there is none.
- *
- * TODO(turnidge): This functions goes away after the
- * class/interface changes.
- */
- ClassMirror get defaultFactory;
-}
-
-/**
- * A [FunctionTypeMirror] represents the type of a function in the
- * Dart language.
- */
-abstract class FunctionTypeMirror implements ClassMirror {
- /**
- * The return type of the reflectee.
- */
- TypeMirror get returnType;
-
- /**
- * A list of the parameter types of the reflectee.
- */
- List<ParameterMirror> get parameters;
-
- /**
- * A mirror on the [:call:] method for the reflectee.
- *
- * TODO(turnidge): What is this and what is it for?
- */
- MethodMirror get callMethod;
-}
-
-/**
- * A [TypeVariableMirror] represents a type parameter of a generic
- * type.
- */
-abstract class TypeVariableMirror extends TypeMirror {
- /**
- * A mirror on the type that is the upper bound of this type variable.
- */
- TypeMirror get upperBound;
-}
-
-/**
- * A [TypedefMirror] represents a typedef in a Dart language program.
- */
-abstract class TypedefMirror implements ClassMirror {
- /**
- * The defining type for this typedef.
- *
- * For instance [:void f(int):] is the value for [:typedef void f(int):].
- */
- TypeMirror get value;
-}
-
-/**
- * A [MethodMirror] reflects a Dart language function, method,
- * constructor, getter, or setter.
- */
-abstract class MethodMirror implements DeclarationMirror {
- /**
- * A mirror on the return type for the reflectee.
- */
- TypeMirror get returnType;
-
- /**
- * A list of mirrors on the parameters for the reflectee.
- */
- List<ParameterMirror> get parameters;
-
- /**
- * Is the reflectee static?
- *
- * For the purposes of the mirrors library, a top-level function is
- * considered static.
- */
- bool get isStatic;
-
- /**
- * Is the reflectee abstract?
- */
- bool get isAbstract;
-
- /**
- * Is the reflectee a regular function or method?
- *
- * A function or method is regular if it is not a getter, setter, or
- * constructor. Note that operators, by this definition, are
- * regular methods.
- */
- bool get isRegularMethod;
-
- /**
- * Is the reflectee an operator?
- */
- bool get isOperator;
-
- /**
- * Is the reflectee a getter?
- */
- bool get isGetter;
-
- /**
- * Is the reflectee a setter?
- */
- bool get isSetter;
-
- /**
- * Is the reflectee a constructor?
- */
- bool get isConstructor;
-
- /**
- * The constructor name for named constructors and factory methods.
- *
- * For unnamed constructors, this is the empty string. For
- * non-constructors, this is the empty string.
- *
- * For example, [:'bar':] is the constructor name for constructor
- * [:Foo.bar:] of type [:Foo:].
- */
- String get constructorName;
-
- /**
- * Is the reflectee a const constructor?
- */
- bool get isConstConstructor;
-
- /**
- * Is the reflectee a generative constructor?
- */
- bool get isGenerativeConstructor;
-
- /**
- * Is the reflectee a redirecting constructor?
- */
- bool get isRedirectingConstructor;
-
- /**
- * Is the reflectee a factory constructor?
- */
- bool get isFactoryConstructor;
-}
-
-/**
- * A [VariableMirror] reflects a Dart language variable declaration.
- */
-abstract class VariableMirror implements DeclarationMirror {
- /**
- * A mirror on the type of the reflectee.
- */
- TypeMirror get type;
-
- /**
- * Is the reflectee a static variable?
- *
- * For the purposes of the mirror library, top-level variables are
- * implicitly declared static.
- */
- bool get isStatic;
-
- /**
- * Is the reflectee a final variable?
- */
- bool get isFinal;
-}
-
-/**
- * A [ParameterMirror] reflects a Dart formal parameter declaration.
- */
-abstract class ParameterMirror implements VariableMirror {
- /**
- * A mirror on the type of this parameter.
- */
- TypeMirror get type;
-
- /**
- * Is this parameter optional?
- */
- bool get isOptional;
-
- /**
- * Is this parameter named?
- */
- bool get isNamed;
-
- /**
- * Does this parameter have a default value?
- */
- bool get hasDefaultValue;
-
- /**
- * A mirror on the default value for this parameter, if it exists.
- *
- * TODO(turnidge): String may not be a good representation of this
- * at runtime.
- */
- String get defaultValue;
-}
-
-/**
- * A [SourceLocation] describes the span of an entity in Dart source code.
- */
-abstract class SourceLocation {
-}
-
-/**
- * When an error occurs during the mirrored execution of code, a
- * [MirroredError] is thrown.
- *
- * In general, there are three main classes of failure that can happen
- * during mirrored execution of code in some isolate:
- *
- * - An exception is thrown but not caught. This is caught by the
- * mirrors framework and a [MirroredUncaughtExceptionError] is
- * created and thrown.
- *
- * - A compile-time error occurs, such as a syntax error. This is
- * suppressed by the mirrors framework and a
- * [MirroredCompilationError] is created and thrown.
- *
- * - A truly fatal error occurs, causing the isolate to be exited. If
- * the reflector and reflectee share the same isolate, then they
- * will both suffer. If the reflector and reflectee are in distinct
- * isolates, then we hope to provide some information about the
- * isolate death, but this has yet to be implemented.
- *
- * TODO(turnidge): Specify the behavior for remote fatal errors.
- */
-abstract class MirroredError implements Exception {
-}
-
-/**
- * When an uncaught exception occurs during the mirrored execution
- * of code, a [MirroredUncaughtExceptionError] is thrown.
- *
- * This exception contains a mirror on the original exception object.
- * It also contains an object which can be used to recover the
- * stacktrace.
- */
-class MirroredUncaughtExceptionError extends MirroredError {
- MirroredUncaughtExceptionError(this.exception_mirror,
- this.exception_string,
- this.stacktrace) {}
-
- /** A mirror on the exception object. */
- final InstanceMirror exception_mirror;
-
- /** The result of toString() for the exception object. */
- final String exception_string;
-
- /** A stacktrace object for the uncaught exception. */
- final Object stacktrace;
-
- String toString() {
- return
- "Uncaught exception during mirrored execution: <${exception_string}>";
- }
-}
-
-/**
- * When a compile-time error occurs during the mirrored execution
- * of code, a [MirroredCompilationError] is thrown.
- *
- * This exception includes the compile-time error message that would
- * have been displayed to the user, if the function had not been
- * invoked via mirror.
- */
-class MirroredCompilationError extends MirroredError {
- MirroredCompilationError(this.message) {}
-
- final String message;
-
- String toString() {
- return "Compile-time error during mirrored execution: <$message>";
- }
-}
-
-/**
- * A [MirrorException] is used to indicate errors within the mirrors
- * framework.
- */
-class MirrorException implements Exception {
- const MirrorException(String this._message);
- String toString() => "MirrorException: '$_message'";
- final String _message;
-}
+part "mirror_classes.dart";
« no previous file with comments | « sdk/lib/mirrors/mirror_classes.dart ('k') | sdk/lib/scalarlist/byte_arrays.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698