remove: deleting temp files

This commit is contained in:
Patrick Stewart 2024-12-21 18:36:54 -07:00
parent b7d1e8cb32
commit d79c3e2c5c
4 changed files with 0 additions and 1010 deletions

View file

@ -1,108 +0,0 @@
import 'dart:core';
import 'package:platform_contracts/contracts.dart';
import 'package:platform_reflection/mirrors.dart';
/// The default implementation of [MirrorSystemContract].
class RuntimeMirrorSystem implements MirrorSystemContract {
/// The singleton instance of the mirror system.
static final instance = RuntimeMirrorSystem._();
RuntimeMirrorSystem._() {
_initializeRootLibrary();
}
final Map<Uri, LibraryMirrorContract> _libraries = {};
final Map<Type, ClassMirrorContract> _classes = {};
final Map<Type, TypeMirrorContract> _types = {};
late final LibraryMirrorContract _rootLibrary;
@override
Map<Uri, LibraryMirrorContract> get libraries => Map.unmodifiable(_libraries);
@override
LibraryMirrorContract findLibrary(Symbol libraryName) {
final lib = _libraries.values.firstWhere(
(lib) => lib.qualifiedName == libraryName,
orElse: () => throw ArgumentError('Library not found: $libraryName'),
);
return lib;
}
@override
IsolateMirrorContract get isolate => IsolateMirror.current(_rootLibrary);
@override
TypeMirrorContract get dynamicType => _getOrCreateTypeMirror(dynamic);
@override
TypeMirrorContract get voidType => _getOrCreateTypeMirror(VoidType);
@override
TypeMirrorContract get neverType => _getOrCreateTypeMirror(NeverType);
/// Creates a mirror reflecting [reflectee].
InstanceMirrorContract reflect(Object reflectee) {
return InstanceMirror(
reflectee: reflectee,
type: reflectClass(reflectee.runtimeType),
);
}
/// Creates a mirror reflecting the class [key].
@override
ClassMirrorContract reflectClass(Type key) {
return _classes.putIfAbsent(
key,
() => ClassMirror(
type: key,
name: key.toString(),
owner: _rootLibrary,
declarations: {},
instanceMembers: {},
staticMembers: {},
metadata: [],
),
);
}
/// Creates a mirror reflecting the type [key].
@override
TypeMirrorContract reflectType(Type key) {
return _getOrCreateTypeMirror(key);
}
TypeMirrorContract _getOrCreateTypeMirror(Type type) {
return _types.putIfAbsent(
type,
() => TypeMirror(
type: type,
name: type.toString(),
owner: _rootLibrary,
metadata: const [],
),
);
}
void _initializeRootLibrary() {
_rootLibrary = LibraryMirror.withDeclarations(
name: 'dart.core',
uri: Uri.parse('dart:core'),
);
_libraries[_rootLibrary.uri] = _rootLibrary;
}
}
/// The current mirror system.
MirrorSystemContract currentMirrorSystem() => RuntimeMirrorSystem.instance;
/// Reflects an instance.
InstanceMirrorContract reflect(Object reflectee) =>
RuntimeMirrorSystem.instance.reflect(reflectee);
/// Reflects a class.
ClassMirrorContract reflectClass(Type key) =>
RuntimeMirrorSystem.instance.reflectClass(key);
/// Reflects a type.
TypeMirrorContract reflectType(Type key) =>
RuntimeMirrorSystem.instance.reflectType(key);

View file

@ -1,269 +0,0 @@
import 'dart:core';
import 'package:platform_contracts/contracts.dart';
import 'package:platform_reflection/mirrors.dart';
/// Implementation of [MirrorSystemContract] that provides reflection on a set of libraries.
class MirrorSystem implements MirrorSystemContract {
final Map<Uri, LibraryMirrorContract> _libraries;
final IsolateMirrorContract _isolate;
final TypeMirrorContract _dynamicType;
final TypeMirrorContract _voidType;
final TypeMirrorContract _neverType;
MirrorSystem({
required Map<Uri, LibraryMirrorContract> libraries,
required IsolateMirrorContract isolate,
}) : _libraries = libraries,
_isolate = isolate,
_dynamicType = TypeMirror.dynamicType(),
_voidType = TypeMirror.voidType(),
_neverType = TypeMirror(
type: Never,
name: 'Never',
owner: null,
metadata: [],
);
/// Creates a mirror system for the current isolate.
factory MirrorSystem.current() {
// Create core library mirror
final coreLibrary = LibraryMirror.withDeclarations(
name: 'dart:core',
uri: _createDartUri('core'),
owner: null,
);
// Create async library mirror
final asyncLibrary = LibraryMirror.withDeclarations(
name: 'dart:async',
uri: _createDartUri('async'),
owner: null,
);
// Create test library mirror
final testLibrary = LibraryMirror.withDeclarations(
name: 'package:test/test.dart',
uri: Uri.parse('package:test/test.dart'),
owner: null,
);
// Add dependencies to core library
final coreDependencies = [
LibraryDependencyMirror(
isImport: true,
isDeferred: false,
sourceLibrary: coreLibrary,
targetLibrary: asyncLibrary,
prefix: null,
combinators: const [],
),
LibraryDependencyMirror(
isImport: false,
isDeferred: false,
sourceLibrary: coreLibrary,
targetLibrary: asyncLibrary,
prefix: null,
combinators: const [],
),
];
// Create root library with dependencies
final rootLibrary = LibraryMirror(
name: 'dart:core',
uri: _createDartUri('core'),
owner: null,
declarations: const {},
libraryDependencies: coreDependencies,
metadata: [],
);
// Create isolate mirror
final isolate = IsolateMirror.current(rootLibrary);
// Create initial libraries map
final libraries = <Uri, LibraryMirrorContract>{
rootLibrary.uri: rootLibrary,
asyncLibrary.uri: asyncLibrary,
testLibrary.uri: testLibrary,
};
return MirrorSystem(
libraries: libraries,
isolate: isolate,
);
}
/// Creates a URI for a dart: library.
static Uri _createDartUri(String library) {
return Uri(scheme: 'dart', path: library);
}
/// Parses a library name into a URI.
static Uri _parseLibraryName(String name) {
if (name.startsWith('"') && name.endsWith('"')) {
name = name.substring(1, name.length - 1);
}
if (name.startsWith('dart:')) {
final library = name.substring(5);
return _createDartUri(library);
}
return Uri.parse(name);
}
@override
Map<Uri, LibraryMirrorContract> get libraries => Map.unmodifiable(_libraries);
@override
LibraryMirrorContract findLibrary(Symbol libraryName) {
final name = libraryName.toString();
// Remove leading 'Symbol(' and trailing ')'
final normalizedName = name.substring(7, name.length - 1);
final uri = _parseLibraryName(normalizedName);
final library = _libraries[uri];
if (library == null) {
throw ArgumentError('Library not found: $normalizedName');
}
return library;
}
@override
ClassMirrorContract reflectClass(Type type) {
// Check if type is reflectable
if (!Reflector.isReflectable(type)) {
throw ArgumentError('Type is not reflectable: $type');
}
// Create temporary class mirror to serve as owner
final tempMirror = ClassMirror(
type: type,
name: type.toString(),
owner: null,
declarations: const {},
instanceMembers: const {},
staticMembers: const {},
metadata: [],
);
// Get metadata from registry
final properties = Reflector.getPropertyMetadata(type) ?? {};
final methods = Reflector.getMethodMetadata(type) ?? {};
//final constructors = Reflector.getConstructorMetadata(type) ?? [];
// Create declarations map
final declarations = <Symbol, DeclarationMirrorContract>{};
final instanceMembers = <Symbol, MethodMirrorContract>{};
final staticMembers = <Symbol, MethodMirrorContract>{};
// Add properties and methods to declarations
properties.forEach((name, prop) {
declarations[Symbol(name)] = VariableMirror(
name: name,
type: TypeMirror(
type: prop.type,
name: prop.type.toString(),
owner: tempMirror,
metadata: [],
),
owner: tempMirror,
isStatic: false,
isFinal: !prop.isWritable,
isConst: false,
metadata: [],
);
});
methods.forEach((name, method) {
final methodMirror = MethodMirror(
name: name,
owner: tempMirror,
returnType: method.returnsVoid
? TypeMirror.voidType(tempMirror)
: TypeMirror.dynamicType(tempMirror),
parameters: method.parameters
.map((param) => ParameterMirror(
name: param.name,
type: TypeMirror(
type: param.type,
name: param.type.toString(),
owner: tempMirror,
metadata: [],
),
owner: tempMirror,
isOptional: !param.isRequired,
isNamed: param.isNamed,
metadata: [],
))
.toList(),
isStatic: method.isStatic,
metadata: [],
);
declarations[Symbol(name)] = methodMirror;
if (method.isStatic) {
staticMembers[Symbol(name)] = methodMirror;
} else {
instanceMembers[Symbol(name)] = methodMirror;
}
});
// Create class mirror
final mirror = ClassMirror(
type: type,
name: type.toString(),
owner: null,
declarations: declarations,
instanceMembers: instanceMembers,
staticMembers: staticMembers,
metadata: [],
);
// Update owners to point to the real class mirror
declarations.forEach((_, decl) {
if (decl is MutableOwnerMirror) {
decl.setOwner(mirror);
}
});
return mirror;
}
@override
TypeMirrorContract reflectType(Type type) {
// Check if type is reflectable
if (!Reflector.isReflectable(type)) {
throw ArgumentError('Type is not reflectable: $type');
}
return TypeMirror(
type: type,
name: type.toString(),
owner: null,
metadata: [],
);
}
@override
IsolateMirrorContract get isolate => _isolate;
@override
TypeMirrorContract get dynamicType => _dynamicType;
@override
TypeMirrorContract get voidType => _voidType;
@override
TypeMirrorContract get neverType => _neverType;
/// Adds a library to the mirror system.
void addLibrary(LibraryMirrorContract library) {
_libraries[library.uri] = library;
}
/// Removes a library from the mirror system.
void removeLibrary(Uri uri) {
_libraries.remove(uri);
}
}

View file

@ -1,315 +0,0 @@
import 'dart:core';
import 'package:platform_contracts/contracts.dart';
import 'package:platform_reflection/mirrors.dart';
/// Implementation of [MirrorSystemContract] that provides reflection on a set of libraries.
class MirrorSystem implements MirrorSystemContract {
/// The singleton instance of the mirror system.
static final instance = MirrorSystem._();
final Map<Uri, LibraryMirrorContract> _libraries;
final Map<Type, ClassMirrorContract> _classes = {};
final Map<Type, TypeMirrorContract> _types = {};
late final LibraryMirrorContract _rootLibrary;
late final IsolateMirrorContract _isolate;
late final TypeMirrorContract _dynamicType;
late final TypeMirrorContract _voidType;
late final TypeMirrorContract _neverType;
MirrorSystem._() : _libraries = {} {
_initializeSystem();
}
void _initializeSystem() {
_initializeRootLibrary();
_initializeCoreDependencies();
_initializeSpecialTypes();
_initializeIsolate();
}
void _initializeRootLibrary() {
_rootLibrary = LibraryMirror.withDeclarations(
name: 'dart.core',
uri: Uri.parse('dart:core'),
);
_libraries[_rootLibrary.uri] = _rootLibrary;
}
void _initializeCoreDependencies() {
// Create core library mirror
final coreLibrary = LibraryMirror.withDeclarations(
name: 'dart:core',
uri: _createDartUri('core'),
owner: null,
);
// Create async library mirror
final asyncLibrary = LibraryMirror.withDeclarations(
name: 'dart:async',
uri: _createDartUri('async'),
owner: null,
);
// Create test library mirror
final testLibrary = LibraryMirror.withDeclarations(
name: 'package:test/test.dart',
uri: Uri.parse('package:test/test.dart'),
owner: null,
);
// Add dependencies to core library
final coreDependencies = [
LibraryDependencyMirror(
isImport: true,
isDeferred: false,
sourceLibrary: coreLibrary,
targetLibrary: asyncLibrary,
prefix: null,
combinators: const [],
),
LibraryDependencyMirror(
isImport: false,
isDeferred: false,
sourceLibrary: coreLibrary,
targetLibrary: asyncLibrary,
prefix: null,
combinators: const [],
),
];
// Update root library with dependencies
_rootLibrary = LibraryMirror(
name: 'dart:core',
uri: _createDartUri('core'),
owner: null,
declarations: const {},
libraryDependencies: coreDependencies,
metadata: [],
);
// Add libraries to the map
_libraries[coreLibrary.uri] = coreLibrary;
_libraries[asyncLibrary.uri] = asyncLibrary;
_libraries[testLibrary.uri] = testLibrary;
}
void _initializeSpecialTypes() {
_dynamicType = TypeMirror.dynamicType();
_voidType = TypeMirror.voidType();
_neverType = TypeMirror(
type: Never,
name: 'Never',
owner: null,
metadata: [],
);
}
void _initializeIsolate() {
_isolate = IsolateMirror.current(_rootLibrary);
}
/// Creates a URI for a dart: library.
static Uri _createDartUri(String library) {
return Uri(scheme: 'dart', path: library);
}
/// Parses a library name into a URI.
static Uri _parseLibraryName(String name) {
if (name.startsWith('"') && name.endsWith('"')) {
name = name.substring(1, name.length - 1);
}
if (name.startsWith('dart:')) {
final library = name.substring(5);
return _createDartUri(library);
}
return Uri.parse(name);
}
@override
Map<Uri, LibraryMirrorContract> get libraries => Map.unmodifiable(_libraries);
@override
LibraryMirrorContract findLibrary(Symbol libraryName) {
final name = libraryName.toString();
// Remove leading 'Symbol(' and trailing ')'
final normalizedName = name.substring(7, name.length - 1);
final uri = _parseLibraryName(normalizedName);
final library = _libraries[uri];
if (library == null) {
throw ArgumentError('Library not found: $normalizedName');
}
return library;
}
@override
ClassMirrorContract reflectClass(Type type) {
return _classes.putIfAbsent(
type,
() => _createClassMirror(type),
);
}
ClassMirrorContract _createClassMirror(Type type) {
// Check if type is reflectable
if (!Reflector.isReflectable(type)) {
throw ArgumentError('Type is not reflectable: $type');
}
// Create temporary class mirror to serve as owner
final tempMirror = ClassMirror(
type: type,
name: type.toString(),
owner: null,
declarations: const {},
instanceMembers: const {},
staticMembers: const {},
metadata: [],
);
// Get metadata from registry
final properties = Reflector.getPropertyMetadata(type) ?? {};
final methods = Reflector.getMethodMetadata(type) ?? {};
// Create declarations map
final declarations = <Symbol, DeclarationMirrorContract>{};
final instanceMembers = <Symbol, MethodMirrorContract>{};
final staticMembers = <Symbol, MethodMirrorContract>{};
// Add properties and methods to declarations
properties.forEach((name, prop) {
declarations[Symbol(name)] = VariableMirror(
name: name,
type: TypeMirror(
type: prop.type,
name: prop.type.toString(),
owner: tempMirror,
metadata: [],
),
owner: tempMirror,
isStatic: false,
isFinal: !prop.isWritable,
isConst: false,
metadata: [],
);
});
methods.forEach((name, method) {
final methodMirror = MethodMirror(
name: name,
owner: tempMirror,
returnType: method.returnsVoid
? TypeMirror.voidType(tempMirror)
: TypeMirror.dynamicType(tempMirror),
parameters: method.parameters
.map((param) => ParameterMirror(
name: param.name,
type: TypeMirror(
type: param.type,
name: param.type.toString(),
owner: tempMirror,
metadata: [],
),
owner: tempMirror,
isOptional: !param.isRequired,
isNamed: param.isNamed,
metadata: [],
))
.toList(),
isStatic: method.isStatic,
metadata: [],
);
declarations[Symbol(name)] = methodMirror;
if (method.isStatic) {
staticMembers[Symbol(name)] = methodMirror;
} else {
instanceMembers[Symbol(name)] = methodMirror;
}
});
// Create class mirror
final mirror = ClassMirror(
type: type,
name: type.toString(),
owner: null,
declarations: declarations,
instanceMembers: instanceMembers,
staticMembers: staticMembers,
metadata: [],
);
// Update owners to point to the real class mirror
declarations.forEach((_, decl) {
if (decl is MutableOwnerMirror) {
decl.setOwner(mirror);
}
});
return mirror;
}
@override
TypeMirrorContract reflectType(Type type) {
return _getOrCreateTypeMirror(type);
}
TypeMirrorContract _getOrCreateTypeMirror(Type type) {
return _types.putIfAbsent(
type,
() => TypeMirror(
type: type,
name: type.toString(),
owner: _rootLibrary,
metadata: const [],
),
);
}
@override
IsolateMirrorContract get isolate => _isolate;
@override
TypeMirrorContract get dynamicType => _dynamicType;
@override
TypeMirrorContract get voidType => _voidType;
@override
TypeMirrorContract get neverType => _neverType;
/// Adds a library to the mirror system.
void addLibrary(LibraryMirrorContract library) {
_libraries[library.uri] = library;
}
/// Removes a library from the mirror system.
void removeLibrary(Uri uri) {
_libraries.remove(uri);
}
/// Creates a mirror reflecting [reflectee].
InstanceMirrorContract reflect(Object reflectee) {
return InstanceMirror(
reflectee: reflectee,
type: reflectClass(reflectee.runtimeType),
);
}
}
/// The current mirror system.
MirrorSystemContract currentMirrorSystem() => MirrorSystem.instance;
/// Reflects an instance.
InstanceMirrorContract reflect(Object reflectee) =>
MirrorSystem.instance.reflect(reflectee);
/// Reflects a class.
ClassMirrorContract reflectClass(Type key) =>
MirrorSystem.instance.reflectClass(key);
/// Reflects a type.
TypeMirrorContract reflectType(Type key) =>
MirrorSystem.instance.reflectType(key);

View file

@ -1,318 +0,0 @@
import 'dart:core';
import 'package:platform_contracts/contracts.dart';
import 'package:platform_reflection/mirrors.dart';
/// Implementation of [MirrorSystemContract] that provides reflection on a set of libraries.
class MirrorSystem implements MirrorSystemContract {
static MirrorSystem? _instance;
static MirrorSystem get instance {
return _instance ??= MirrorSystem._();
}
final Map<Uri, LibraryMirrorContract> _libraries = {};
final Map<Type, ClassMirrorContract> _classes = {};
final Map<Type, TypeMirrorContract> _types = {};
late final LibraryMirrorContract _rootLibrary;
late final IsolateMirrorContract _isolate;
late final TypeMirrorContract _dynamicType;
late final TypeMirrorContract _voidType;
late final TypeMirrorContract _neverType;
// Private constructor
MirrorSystem._() {
_initializeSystem();
}
void _initializeSystem() {
_initializeRootLibrary();
_initializeCoreDependencies();
_initializeSpecialTypes();
_initializeIsolate();
}
void _initializeRootLibrary() {
_rootLibrary = LibraryMirror.withDeclarations(
name: 'dart.core',
uri: Uri.parse('dart:core'),
);
_libraries[_rootLibrary.uri] = _rootLibrary;
}
void _initializeCoreDependencies() {
// Create core library mirror
final coreLibrary = LibraryMirror.withDeclarations(
name: 'dart:core',
uri: _createDartUri('core'),
owner: null,
);
// Create async library mirror
final asyncLibrary = LibraryMirror.withDeclarations(
name: 'dart:async',
uri: _createDartUri('async'),
owner: null,
);
// Create test library mirror
final testLibrary = LibraryMirror.withDeclarations(
name: 'package:test/test.dart',
uri: Uri.parse('package:test/test.dart'),
owner: null,
);
// Add dependencies to core library
final coreDependencies = [
LibraryDependencyMirror(
isImport: true,
isDeferred: false,
sourceLibrary: coreLibrary,
targetLibrary: asyncLibrary,
prefix: null,
combinators: const [],
),
LibraryDependencyMirror(
isImport: false,
isDeferred: false,
sourceLibrary: coreLibrary,
targetLibrary: asyncLibrary,
prefix: null,
combinators: const [],
),
];
// Update core library with dependencies
_libraries[coreLibrary.uri] = LibraryMirror(
name: 'dart:core',
uri: _createDartUri('core'),
owner: null,
declarations: const {},
libraryDependencies: coreDependencies,
metadata: [],
);
// Add libraries to the map
_libraries[asyncLibrary.uri] = asyncLibrary;
_libraries[testLibrary.uri] = testLibrary;
}
void _initializeSpecialTypes() {
_dynamicType = TypeMirror.dynamicType();
_voidType = TypeMirror.voidType();
_neverType = TypeMirror(
type: Never,
name: 'Never',
owner: null,
metadata: [],
);
}
void _initializeIsolate() {
_isolate = IsolateMirror.current(_rootLibrary);
}
/// Creates a URI for a dart: library.
static Uri _createDartUri(String library) {
return Uri(scheme: 'dart', path: library);
}
/// Parses a library name into a URI.
static Uri _parseLibraryName(String name) {
if (name.startsWith('"') && name.endsWith('"')) {
name = name.substring(1, name.length - 1);
}
if (name.startsWith('dart:')) {
final library = name.substring(5);
return _createDartUri(library);
}
return Uri.parse(name);
}
@override
Map<Uri, LibraryMirrorContract> get libraries => Map.unmodifiable(_libraries);
@override
LibraryMirrorContract findLibrary(Symbol libraryName) {
final name = libraryName.toString();
// Remove leading 'Symbol(' and trailing ')'
final normalizedName = name.substring(7, name.length - 1);
final uri = _parseLibraryName(normalizedName);
final library = _libraries[uri];
if (library == null) {
throw ArgumentError('Library not found: $normalizedName');
}
return library;
}
@override
ClassMirrorContract reflectClass(Type type) {
return _classes.putIfAbsent(
type,
() => _createClassMirror(type),
);
}
ClassMirrorContract _createClassMirror(Type type) {
// Check if type is reflectable
if (!Reflector.isReflectable(type)) {
throw ArgumentError('Type is not reflectable: $type');
}
// Create temporary class mirror to serve as owner
final tempMirror = ClassMirror(
type: type,
name: type.toString(),
owner: null,
declarations: const {},
instanceMembers: const {},
staticMembers: const {},
metadata: [],
);
// Get metadata from registry
final properties = Reflector.getPropertyMetadata(type) ?? {};
final methods = Reflector.getMethodMetadata(type) ?? {};
// Create declarations map
final declarations = <Symbol, DeclarationMirrorContract>{};
final instanceMembers = <Symbol, MethodMirrorContract>{};
final staticMembers = <Symbol, MethodMirrorContract>{};
// Add properties and methods to declarations
properties.forEach((name, prop) {
declarations[Symbol(name)] = VariableMirror(
name: name,
type: TypeMirror(
type: prop.type,
name: prop.type.toString(),
owner: tempMirror,
metadata: [],
),
owner: tempMirror,
isStatic: false,
isFinal: !prop.isWritable,
isConst: false,
metadata: [],
);
});
methods.forEach((name, method) {
final methodMirror = MethodMirror(
name: name,
owner: tempMirror,
returnType: method.returnsVoid
? TypeMirror.voidType(tempMirror)
: TypeMirror.dynamicType(tempMirror),
parameters: method.parameters
.map((param) => ParameterMirror(
name: param.name,
type: TypeMirror(
type: param.type,
name: param.type.toString(),
owner: tempMirror,
metadata: [],
),
owner: tempMirror,
isOptional: !param.isRequired,
isNamed: param.isNamed,
metadata: [],
))
.toList(),
isStatic: method.isStatic,
metadata: [],
);
declarations[Symbol(name)] = methodMirror;
if (method.isStatic) {
staticMembers[Symbol(name)] = methodMirror;
} else {
instanceMembers[Symbol(name)] = methodMirror;
}
});
// Create class mirror
final mirror = ClassMirror(
type: type,
name: type.toString(),
owner: null,
declarations: declarations,
instanceMembers: instanceMembers,
staticMembers: staticMembers,
metadata: [],
);
// Update owners to point to the real class mirror
declarations.forEach((_, decl) {
if (decl is MutableOwnerMirror) {
decl.setOwner(mirror);
}
});
return mirror;
}
@override
TypeMirrorContract reflectType(Type type) {
return _getOrCreateTypeMirror(type);
}
TypeMirrorContract _getOrCreateTypeMirror(Type type) {
return _types.putIfAbsent(
type,
() => TypeMirror(
type: type,
name: type.toString(),
owner: _rootLibrary,
metadata: const [],
),
);
}
@override
IsolateMirrorContract get isolate => _isolate;
@override
TypeMirrorContract get dynamicType => _dynamicType;
@override
TypeMirrorContract get voidType => _voidType;
@override
TypeMirrorContract get neverType => _neverType;
/// Adds a library to the mirror system.
void addLibrary(LibraryMirrorContract library) {
_libraries[library.uri] = library;
}
/// Removes a library from the mirror system.
void removeLibrary(Uri uri) {
_libraries.remove(uri);
}
/// Creates a mirror reflecting [reflectee].
InstanceMirrorContract reflect(Object reflectee) {
return InstanceMirror(
reflectee: reflectee,
type: reflectClass(reflectee.runtimeType),
);
}
}
/// The current mirror system.
MirrorSystemContract currentMirrorSystem() => MirrorSystem.instance;
/// Reflects an instance.
InstanceMirrorContract reflect(Object reflectee) =>
MirrorSystem.instance.reflect(reflectee);
/// Reflects a class.
ClassMirrorContract reflectClass(Type key) =>
MirrorSystem.instance.reflectClass(key);
/// Reflects a type.
TypeMirrorContract reflectType(Type key) =>
MirrorSystem.instance.reflectType(key);