-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is a very bare bones version - just enough to get angular running. See #199 R=jmesserly@google.com Review URL: https://codereview.chromium.org/1186683005.
- Loading branch information
Showing
14 changed files
with
1,857 additions
and
81 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
dart_library.library('dart/_js_mirrors', null, /* Imports */[ | ||
"dart_runtime/dart", | ||
'dart/_internal', | ||
'dart/core', | ||
'dart/mirrors' | ||
], /* Lazy imports */[ | ||
], function(exports, dart, _internal, core, mirrors) { | ||
'use strict'; | ||
let dartx = dart.dartx; | ||
function getName(symbol) { | ||
return _internal.Symbol.getName(dart.as(symbol, _internal.Symbol)); | ||
} | ||
dart.fn(getName, core.String, [core.Symbol]); | ||
function getSymbol(name, library) { | ||
return dart.throw_(new core.UnimplementedError("MirrorSystem.getSymbol unimplemented")); | ||
} | ||
dart.fn(getSymbol, core.Symbol, [core.Object, core.Object]); | ||
dart.defineLazyProperties(exports, { | ||
get currentJsMirrorSystem() { | ||
return dart.throw_(new core.UnimplementedError("MirrorSystem.currentJsMirrorSystem unimplemented")); | ||
} | ||
}); | ||
function reflect(reflectee) { | ||
return new JsInstanceMirror._(reflectee); | ||
} | ||
dart.fn(reflect, mirrors.InstanceMirror, [core.Object]); | ||
function reflectType(key) { | ||
return new JsClassMirror._(key); | ||
} | ||
dart.fn(reflectType, mirrors.TypeMirror, [core.Type]); | ||
dart.defineLazyProperties(exports, { | ||
get _dart() { | ||
return dart; | ||
}, | ||
get _metadata() { | ||
return exports._dart.metadata; | ||
} | ||
}); | ||
function _dload(obj, name) { | ||
return exports._dart.dload(obj, name); | ||
} | ||
dart.fn(_dload, core.Object, [core.Object, core.String]); | ||
function _dput(obj, name, val) { | ||
exports._dart.dput(obj, name, val); | ||
} | ||
dart.fn(_dput, dart.void, [core.Object, core.String, core.Object]); | ||
function _dsend(obj, name, args) { | ||
return exports._dart.dsendArray(obj, name, args); | ||
} | ||
dart.fn(_dsend, core.Object, [core.Object, core.String, core.List]); | ||
let _toJsMap = Symbol('_toJsMap'); | ||
class JsInstanceMirror extends core.Object { | ||
_(reflectee) { | ||
this.reflectee = reflectee; | ||
} | ||
getField(symbol) { | ||
let name = getName(symbol); | ||
let field = _dload(this.reflectee, name); | ||
return new JsInstanceMirror._(field); | ||
} | ||
setField(symbol, value) { | ||
let name = getName(symbol); | ||
let field = _dput(this.reflectee, name, value); | ||
return new JsInstanceMirror._(field); | ||
} | ||
invoke(symbol, args, namedArgs) { | ||
if (namedArgs === void 0) | ||
namedArgs = null; | ||
let name = getName(symbol); | ||
if (namedArgs != null) { | ||
args = core.List.from(args); | ||
args[dartx.add](this[_toJsMap](namedArgs)); | ||
} | ||
let result = _dsend(this.reflectee, name, args); | ||
return new JsInstanceMirror._(result); | ||
} | ||
[_toJsMap](map) { | ||
let obj = {}; | ||
map.forEach(dart.fn((key, value) => { | ||
obj[getName(key)] = value; | ||
}, core.Object, [core.Symbol, core.Object])); | ||
return obj; | ||
} | ||
} | ||
JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror]; | ||
dart.defineNamedConstructor(JsInstanceMirror, '_'); | ||
dart.setSignature(JsInstanceMirror, { | ||
constructors: () => ({_: [JsInstanceMirror, [core.Object]]}), | ||
methods: () => ({ | ||
getField: [mirrors.InstanceMirror, [core.Symbol]], | ||
setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]], | ||
invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, core.Object)]], | ||
[_toJsMap]: [core.Object, [core.Map$(core.Symbol, core.Object)]] | ||
}) | ||
}); | ||
let _metadata = Symbol('_metadata'); | ||
let _declarations = Symbol('_declarations'); | ||
let _cls = Symbol('_cls'); | ||
class JsClassMirror extends core.Object { | ||
get metadata() { | ||
return this[_metadata]; | ||
} | ||
get declarations() { | ||
return this[_declarations]; | ||
} | ||
_(cls) { | ||
this[_cls] = cls; | ||
this.simpleName = core.Symbol.new(cls.name); | ||
this[_metadata] = null; | ||
this[_declarations] = null; | ||
let fn = this[_cls][dart.metadata]; | ||
this[_metadata] = fn == null ? dart.list([], mirrors.InstanceMirror) : core.List$(mirrors.InstanceMirror).from(dart.as(dart.dsend(dart.dcall(fn), 'map', dart.fn(i => new JsInstanceMirror._(i), JsInstanceMirror, [core.Object])), core.Iterable)); | ||
this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new(); | ||
this[_declarations].set(this.simpleName, new JsMethodMirror._(this, this[_cls])); | ||
} | ||
newInstance(constructorName, args, namedArgs) { | ||
if (namedArgs === void 0) | ||
namedArgs = null; | ||
dart.assert(getName(constructorName) == ""); | ||
dart.assert(namedArgs == null || dart.notNull(namedArgs.isEmpty)); | ||
let instance = exports._dart.instantiate(this[_cls], args); | ||
return new JsInstanceMirror._(instance); | ||
} | ||
} | ||
JsClassMirror[dart.implements] = () => [mirrors.ClassMirror]; | ||
dart.defineNamedConstructor(JsClassMirror, '_'); | ||
dart.setSignature(JsClassMirror, { | ||
constructors: () => ({_: [JsClassMirror, [core.Type]]}), | ||
methods: () => ({newInstance: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, core.Object)]]}) | ||
}); | ||
class JsTypeMirror extends core.Object { | ||
_(reflectedType) { | ||
this.reflectedType = reflectedType; | ||
} | ||
} | ||
JsTypeMirror[dart.implements] = () => [mirrors.TypeMirror]; | ||
dart.defineNamedConstructor(JsTypeMirror, '_'); | ||
dart.setSignature(JsTypeMirror, { | ||
constructors: () => ({_: [JsTypeMirror, [core.Type]]}) | ||
}); | ||
let _name = Symbol('_name'); | ||
class JsParameterMirror extends core.Object { | ||
_(name, t) { | ||
this.metadata = dart.list([], mirrors.InstanceMirror); | ||
this[_name] = name; | ||
this.type = new JsTypeMirror._(t); | ||
} | ||
} | ||
JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror]; | ||
dart.defineNamedConstructor(JsParameterMirror, '_'); | ||
dart.setSignature(JsParameterMirror, { | ||
constructors: () => ({_: [JsParameterMirror, [core.String, core.Type]]}) | ||
}); | ||
let _method = Symbol('_method'); | ||
let _params = Symbol('_params'); | ||
let _createParameterMirrorList = Symbol('_createParameterMirrorList'); | ||
class JsMethodMirror extends core.Object { | ||
_(cls, method) { | ||
this[_method] = method; | ||
this[_name] = getName(cls.simpleName); | ||
this[_params] = null; | ||
let ftype = exports._dart.classGetConstructorType(cls[_cls]); | ||
this[_params] = this[_createParameterMirrorList](ftype); | ||
} | ||
get constructorName() { | ||
return core.Symbol.new(''); | ||
} | ||
get parameters() { | ||
return this[_params]; | ||
} | ||
[_createParameterMirrorList](ftype) { | ||
if (ftype == null) { | ||
return dart.list([], mirrors.ParameterMirror); | ||
} | ||
let args = dart.as(dart.dload(ftype, 'args'), core.List); | ||
let opts = dart.as(dart.dload(ftype, 'optionals'), core.List); | ||
let params = core.List$(mirrors.ParameterMirror).new(dart.notNull(args[dartx.length]) + dart.notNull(opts[dartx.length])); | ||
for (let i = 0; dart.notNull(i) < dart.notNull(args[dartx.length]); i = dart.notNull(i) + 1) { | ||
let type = args[dartx.get](i); | ||
let param = new JsParameterMirror._('', dart.as(type, core.Type)); | ||
params[dartx.set](i, param); | ||
} | ||
for (let i = 0; dart.notNull(i) < dart.notNull(opts[dartx.length]); i = dart.notNull(i) + 1) { | ||
let type = opts[dartx.get](i); | ||
let param = new JsParameterMirror._('', dart.as(type, core.Type)); | ||
params[dartx.set](dart.notNull(i) + dart.notNull(args[dartx.length]), param); | ||
} | ||
return params; | ||
} | ||
} | ||
JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror]; | ||
dart.defineNamedConstructor(JsMethodMirror, '_'); | ||
dart.setSignature(JsMethodMirror, { | ||
constructors: () => ({_: [JsMethodMirror, [JsClassMirror, core.Object]]}), | ||
methods: () => ({[_createParameterMirrorList]: [core.List$(mirrors.ParameterMirror), [core.Object]]}) | ||
}); | ||
// Exports: | ||
exports.getName = getName; | ||
exports.getSymbol = getSymbol; | ||
exports.reflect = reflect; | ||
exports.reflectType = reflectType; | ||
exports.JsInstanceMirror = JsInstanceMirror; | ||
exports.JsClassMirror = JsClassMirror; | ||
exports.JsTypeMirror = JsTypeMirror; | ||
exports.JsParameterMirror = JsParameterMirror; | ||
exports.JsMethodMirror = JsMethodMirror; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
dart_library.library('dart/mirrors', null, /* Imports */[ | ||
"dart_runtime/dart", | ||
'dart/core' | ||
], /* Lazy imports */[ | ||
'dart/_js_mirrors' | ||
], function(exports, dart, core, _js_mirrors) { | ||
'use strict'; | ||
let dartx = dart.dartx; | ||
class MirrorSystem extends core.Object { | ||
findLibrary(libraryName) { | ||
return this.libraries.values[dartx.singleWhere](dart.fn(library => dart.equals(dart.dload(library, 'simpleName'), libraryName), core.bool, [core.Object])); | ||
} | ||
static getName(symbol) { | ||
return _js_mirrors.getName(symbol); | ||
} | ||
static getSymbol(name, library) { | ||
if (library === void 0) | ||
library = null; | ||
return _js_mirrors.getSymbol(name, library); | ||
} | ||
} | ||
dart.setSignature(MirrorSystem, { | ||
methods: () => ({findLibrary: [LibraryMirror, [core.Symbol]]}), | ||
statics: () => ({ | ||
getName: [core.String, [core.Symbol]], | ||
getSymbol: [core.Symbol, [core.String], [LibraryMirror]] | ||
}), | ||
names: ['getName', 'getSymbol'] | ||
}); | ||
function currentMirrorSystem() { | ||
return dart.as(_js_mirrors.currentJsMirrorSystem, MirrorSystem); | ||
} | ||
dart.fn(currentMirrorSystem, MirrorSystem, []); | ||
function reflect(reflectee) { | ||
return _js_mirrors.reflect(reflectee); | ||
} | ||
dart.fn(reflect, () => dart.functionType(InstanceMirror, [core.Object])); | ||
function reflectClass(key) { | ||
if (!dart.is(key, core.Type) || dart.equals(key, core.Object)) { | ||
throw new core.ArgumentError(`${key} does not denote a class`); | ||
} | ||
let tm = reflectType(key); | ||
if (!dart.is(tm, ClassMirror)) { | ||
throw new core.ArgumentError(`${key} does not denote a class`); | ||
} | ||
return dart.as(dart.as(tm, ClassMirror).originalDeclaration, ClassMirror); | ||
} | ||
dart.fn(reflectClass, () => dart.functionType(ClassMirror, [core.Type])); | ||
function reflectType(key) { | ||
if (dart.equals(key, core.Object)) { | ||
return currentMirrorSystem().dynamicType; | ||
} | ||
return _js_mirrors.reflectType(key); | ||
} | ||
dart.fn(reflectType, () => dart.functionType(TypeMirror, [core.Type])); | ||
class Mirror extends core.Object {} | ||
class IsolateMirror extends core.Object {} | ||
IsolateMirror[dart.implements] = () => [Mirror]; | ||
class DeclarationMirror extends core.Object {} | ||
DeclarationMirror[dart.implements] = () => [Mirror]; | ||
class ObjectMirror extends core.Object {} | ||
ObjectMirror[dart.implements] = () => [Mirror]; | ||
class InstanceMirror extends core.Object {} | ||
InstanceMirror[dart.implements] = () => [ObjectMirror]; | ||
class ClosureMirror extends core.Object {} | ||
ClosureMirror[dart.implements] = () => [InstanceMirror]; | ||
class LibraryMirror extends core.Object {} | ||
LibraryMirror[dart.implements] = () => [DeclarationMirror, ObjectMirror]; | ||
class LibraryDependencyMirror extends core.Object {} | ||
LibraryDependencyMirror[dart.implements] = () => [Mirror]; | ||
class CombinatorMirror extends core.Object {} | ||
CombinatorMirror[dart.implements] = () => [Mirror]; | ||
class TypeMirror extends core.Object {} | ||
TypeMirror[dart.implements] = () => [DeclarationMirror]; | ||
class ClassMirror extends core.Object {} | ||
ClassMirror[dart.implements] = () => [TypeMirror, ObjectMirror]; | ||
class FunctionTypeMirror extends core.Object {} | ||
FunctionTypeMirror[dart.implements] = () => [ClassMirror]; | ||
class TypeVariableMirror extends TypeMirror {} | ||
class TypedefMirror extends core.Object {} | ||
TypedefMirror[dart.implements] = () => [TypeMirror]; | ||
class MethodMirror extends core.Object {} | ||
MethodMirror[dart.implements] = () => [DeclarationMirror]; | ||
class VariableMirror extends core.Object {} | ||
VariableMirror[dart.implements] = () => [DeclarationMirror]; | ||
class ParameterMirror extends core.Object {} | ||
ParameterMirror[dart.implements] = () => [VariableMirror]; | ||
class SourceLocation extends core.Object {} | ||
class Comment extends core.Object { | ||
Comment(text, trimmedText, isDocComment) { | ||
this.text = text; | ||
this.trimmedText = trimmedText; | ||
this.isDocComment = isDocComment; | ||
} | ||
} | ||
dart.setSignature(Comment, { | ||
constructors: () => ({Comment: [Comment, [core.String, core.String, core.bool]]}) | ||
}); | ||
class MirrorsUsed extends core.Object { | ||
MirrorsUsed(opts) { | ||
let symbols = opts && 'symbols' in opts ? opts.symbols : null; | ||
let targets = opts && 'targets' in opts ? opts.targets : null; | ||
let metaTargets = opts && 'metaTargets' in opts ? opts.metaTargets : null; | ||
let override = opts && 'override' in opts ? opts.override : null; | ||
this.symbols = symbols; | ||
this.targets = targets; | ||
this.metaTargets = metaTargets; | ||
this.override = override; | ||
} | ||
} | ||
dart.setSignature(MirrorsUsed, { | ||
constructors: () => ({MirrorsUsed: [MirrorsUsed, [], {symbols: core.Object, targets: core.Object, metaTargets: core.Object, override: core.Object}]}) | ||
}); | ||
// Exports: | ||
exports.MirrorSystem = MirrorSystem; | ||
exports.currentMirrorSystem = currentMirrorSystem; | ||
exports.reflect = reflect; | ||
exports.reflectClass = reflectClass; | ||
exports.reflectType = reflectType; | ||
exports.Mirror = Mirror; | ||
exports.IsolateMirror = IsolateMirror; | ||
exports.DeclarationMirror = DeclarationMirror; | ||
exports.ObjectMirror = ObjectMirror; | ||
exports.InstanceMirror = InstanceMirror; | ||
exports.ClosureMirror = ClosureMirror; | ||
exports.LibraryMirror = LibraryMirror; | ||
exports.LibraryDependencyMirror = LibraryDependencyMirror; | ||
exports.CombinatorMirror = CombinatorMirror; | ||
exports.TypeMirror = TypeMirror; | ||
exports.ClassMirror = ClassMirror; | ||
exports.FunctionTypeMirror = FunctionTypeMirror; | ||
exports.TypeVariableMirror = TypeVariableMirror; | ||
exports.TypedefMirror = TypedefMirror; | ||
exports.MethodMirror = MethodMirror; | ||
exports.VariableMirror = VariableMirror; | ||
exports.ParameterMirror = ParameterMirror; | ||
exports.SourceLocation = SourceLocation; | ||
exports.Comment = Comment; | ||
exports.MirrorsUsed = MirrorsUsed; | ||
}); |
Oops, something went wrong.