blob: 758b1647a6b7893e56999662b6539089c7431597 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Patch library for dart:mirrors.
import 'dart:_js_helper' show patch;
import 'dart:_js_mirrors' as js;
@patch
class MirrorSystem {
@patch
static String getName(Symbol symbol) => js.getName(symbol);
@patch
static Symbol getSymbol(String name, [LibraryMirror library]) {
return js.getSymbol(name, library);
}
}
@patch
MirrorSystem currentMirrorSystem() => js.currentJsMirrorSystem;
@patch
InstanceMirror reflect(Object reflectee) => js.reflect(reflectee);
@patch
ClassMirror reflectClass(Type key) {
if (key is! Type || key == dynamic) {
throw new ArgumentError('$key does not denote a class');
}
TypeMirror tm = reflectType(key);
if (tm is! ClassMirror) {
throw new ArgumentError("$key does not denote a class");
}
return (tm as ClassMirror).originalDeclaration;
}
@patch
TypeMirror reflectType(Type key) {
if (key == dynamic) {
return currentMirrorSystem().dynamicType;
}
return js.reflectType(key);
}