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

Side by Side Diff: lib/runtime/dart/_js_mirrors.js

Issue 1317933005: Some preliminary support for quasi-generics (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 5 years, 3 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 dart_library.library('dart/_js_mirrors', null, /* Imports */[
2 "dart_runtime/dart",
3 'dart/_internal',
4 'dart/core',
5 'dart/mirrors'
6 ], /* Lazy imports */[
7 ], function(exports, dart, _internal, core, mirrors) {
8 'use strict';
9 let dartx = dart.dartx;
10 function getName(symbol) {
11 return _internal.Symbol.getName(dart.as(symbol, _internal.Symbol));
12 }
13 dart.fn(getName, core.String, [core.Symbol]);
14 function getSymbol(name, library) {
15 return dart.throw(new core.UnimplementedError("MirrorSystem.getSymbol unimpl emented"));
16 }
17 dart.fn(getSymbol, core.Symbol, [dart.dynamic, dart.dynamic]);
18 dart.defineLazyProperties(exports, {
19 get currentJsMirrorSystem() {
20 return dart.throw(new core.UnimplementedError("MirrorSystem.currentJsMirro rSystem unimplemented"));
21 }
22 });
23 function reflect(reflectee) {
24 return new JsInstanceMirror._(reflectee);
25 }
26 dart.fn(reflect, mirrors.InstanceMirror, [dart.dynamic]);
27 function reflectType(key) {
28 return new JsClassMirror._(key);
29 }
30 dart.fn(reflectType, mirrors.TypeMirror, [core.Type]);
31 dart.defineLazyProperties(exports, {
32 get _dart() {
33 return dart;
34 },
35 get _metadata() {
36 return exports._dart.metadata;
37 }
38 });
39 function _dload(obj, name) {
40 return exports._dart.dload(obj, name);
41 }
42 dart.fn(_dload, dart.dynamic, [dart.dynamic, core.String]);
43 function _dput(obj, name, val) {
44 exports._dart.dput(obj, name, val);
45 }
46 dart.fn(_dput, dart.void, [dart.dynamic, core.String, dart.dynamic]);
47 function _dsend(obj, name, args) {
48 return exports._dart.dsend(obj, name, ...args);
49 }
50 dart.fn(_dsend, dart.dynamic, [dart.dynamic, core.String, core.List]);
51 let _toJsMap = Symbol('_toJsMap');
52 class JsInstanceMirror extends core.Object {
53 _(reflectee) {
54 this.reflectee = reflectee;
55 }
56 get type() {
57 return dart.throw(new core.UnimplementedError("ClassMirror.type unimplemen ted"));
58 }
59 get hasReflectee() {
60 return dart.throw(new core.UnimplementedError("ClassMirror.hasReflectee un implemented"));
61 }
62 delegate(invocation) {
63 return dart.throw(new core.UnimplementedError("ClassMirror.delegate unimpl emented"));
64 }
65 getField(symbol) {
66 let name = getName(symbol);
67 let field = _dload(this.reflectee, name);
68 return new JsInstanceMirror._(field);
69 }
70 setField(symbol, value) {
71 let name = getName(symbol);
72 _dput(this.reflectee, name, value);
73 return new JsInstanceMirror._(value);
74 }
75 invoke(symbol, args, namedArgs) {
76 if (namedArgs === void 0)
77 namedArgs = null;
78 let name = getName(symbol);
79 if (namedArgs != null) {
80 args = core.List.from(args);
81 args[dartx.add](this[_toJsMap](namedArgs));
82 }
83 let result = _dsend(this.reflectee, name, args);
84 return new JsInstanceMirror._(result);
85 }
86 [_toJsMap](map) {
87 let obj = {};
88 map.forEach(dart.fn((key, value) => {
89 obj[getName(key)] = value;
90 }, dart.dynamic, [core.Symbol, dart.dynamic]));
91 return obj;
92 }
93 }
94 JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror];
95 dart.defineNamedConstructor(JsInstanceMirror, '_');
96 dart.setSignature(JsInstanceMirror, {
97 constructors: () => ({_: [JsInstanceMirror, [core.Object]]}),
98 methods: () => ({
99 delegate: [dart.dynamic, [core.Invocation]],
100 getField: [mirrors.InstanceMirror, [core.Symbol]],
101 setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]],
102 invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core .Symbol, dart.dynamic)]],
103 [_toJsMap]: [dart.dynamic, [core.Map$(core.Symbol, dart.dynamic)]]
104 })
105 });
106 let _metadata = Symbol('_metadata');
107 let _declarations = Symbol('_declarations');
108 let _cls = Symbol('_cls');
109 class JsClassMirror extends core.Object {
110 get metadata() {
111 return this[_metadata];
112 }
113 get declarations() {
114 return this[_declarations];
115 }
116 _(cls) {
117 this[_cls] = cls;
118 this.simpleName = core.Symbol.new(cls.name);
119 this[_metadata] = null;
120 this[_declarations] = null;
121 let fn = this[_cls][dart.metadata];
122 this[_metadata] = fn == null ? dart.list([], mirrors.InstanceMirror) : cor e.List$(mirrors.InstanceMirror).from(dart.as(dart.dsend(dart.dcall(fn), 'map', d art.fn(i => new JsInstanceMirror._(i), JsInstanceMirror, [dart.dynamic])), core. Iterable));
123 this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new();
124 this[_declarations].set(this.simpleName, new JsMethodMirror._(this, this[_ cls]));
125 }
126 newInstance(constructorName, args, namedArgs) {
127 if (namedArgs === void 0)
128 namedArgs = null;
129 dart.assert(getName(constructorName) == "");
130 dart.assert(namedArgs == null || dart.notNull(namedArgs.isEmpty));
131 let instance = new this[_cls](...args);
132 return new JsInstanceMirror._(instance);
133 }
134 get superinterfaces() {
135 let interfaces = this[_cls][dart.implements];
136 if (interfaces == null) {
137 return dart.list([], mirrors.ClassMirror);
138 }
139 dart.throw(new core.UnimplementedError("ClassMirror.superinterfaces unimpl emented"));
140 }
141 getField(fieldName) {
142 return dart.throw(new core.UnimplementedError("ClassMirror.getField unimpl emented"));
143 }
144 invoke(memberName, positionalArguments, namedArguments) {
145 if (namedArguments === void 0)
146 namedArguments = null;
147 return dart.throw(new core.UnimplementedError("ClassMirror.invoke unimplem ented"));
148 }
149 isAssignableTo(other) {
150 return dart.throw(new core.UnimplementedError("ClassMirror.isAssignable un implemented"));
151 }
152 isSubclassOf(other) {
153 return dart.throw(new core.UnimplementedError("ClassMirror.isSubclassOf un implemented"));
154 }
155 isSubtypeOf(other) {
156 return dart.throw(new core.UnimplementedError("ClassMirror.isSubtypeOf uni mplemented"));
157 }
158 setField(fieldName, value) {
159 return dart.throw(new core.UnimplementedError("ClassMirror.setField unimpl emented"));
160 }
161 get hasReflectedType() {
162 return dart.throw(new core.UnimplementedError("ClassMirror.hasReflectedTyp e unimplemented"));
163 }
164 get instanceMembers() {
165 return dart.throw(new core.UnimplementedError("ClassMirror.instanceMembers unimplemented"));
166 }
167 get isAbstract() {
168 return dart.throw(new core.UnimplementedError("ClassMirror.isAbstract unim plemented"));
169 }
170 get isEnum() {
171 return dart.throw(new core.UnimplementedError("ClassMirror.isEnum unimplem ented"));
172 }
173 get isOriginalDeclaration() {
174 return dart.throw(new core.UnimplementedError("ClassMirror.isOriginalDecla ration unimplemented"));
175 }
176 get isPrivate() {
177 return dart.throw(new core.UnimplementedError("ClassMirror.isPrivate unimp lemented"));
178 }
179 get isTopLevel() {
180 return dart.throw(new core.UnimplementedError("ClassMirror.isTopLevel unim plemented"));
181 }
182 get location() {
183 return dart.throw(new core.UnimplementedError("ClassMirror.location unimpl emented"));
184 }
185 get mixin() {
186 return dart.throw(new core.UnimplementedError("ClassMirror.mixin unimpleme nted"));
187 }
188 get originalDeclaration() {
189 return dart.throw(new core.UnimplementedError("ClassMirror.originalDeclara tion unimplemented"));
190 }
191 get owner() {
192 return dart.throw(new core.UnimplementedError("ClassMirror.owner unimpleme nted"));
193 }
194 get qualifiedName() {
195 return dart.throw(new core.UnimplementedError("ClassMirror.qualifiedName u nimplemented"));
196 }
197 get reflectedType() {
198 return dart.throw(new core.UnimplementedError("ClassMirror.reflectedType u nimplemented"));
199 }
200 get staticMembers() {
201 return dart.throw(new core.UnimplementedError("ClassMirror.staticMembers u nimplemented"));
202 }
203 get superclass() {
204 return dart.throw(new core.UnimplementedError("ClassMirror.superclass unim plemented"));
205 }
206 get typeArguments() {
207 return dart.throw(new core.UnimplementedError("ClassMirror.typeArguments u nimplemented"));
208 }
209 get typeVariables() {
210 return dart.throw(new core.UnimplementedError("ClassMirror.typeVariables u nimplemented"));
211 }
212 }
213 JsClassMirror[dart.implements] = () => [mirrors.ClassMirror];
214 dart.defineNamedConstructor(JsClassMirror, '_');
215 dart.setSignature(JsClassMirror, {
216 constructors: () => ({_: [JsClassMirror, [core.Type]]}),
217 methods: () => ({
218 newInstance: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$ (core.Symbol, dart.dynamic)]],
219 getField: [mirrors.InstanceMirror, [core.Symbol]],
220 invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core .Symbol, dart.dynamic)]],
221 isAssignableTo: [core.bool, [mirrors.TypeMirror]],
222 isSubclassOf: [core.bool, [mirrors.ClassMirror]],
223 isSubtypeOf: [core.bool, [mirrors.TypeMirror]],
224 setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]]
225 })
226 });
227 class JsTypeMirror extends core.Object {
228 _(reflectedType) {
229 this.reflectedType = reflectedType;
230 this.hasReflectedType = true;
231 }
232 isAssignableTo(other) {
233 return dart.throw(new core.UnimplementedError("TypeMirror.isAssignable uni mplemented"));
234 }
235 isSubtypeOf(other) {
236 return dart.throw(new core.UnimplementedError("TypeMirror.isSubtypeOf unim plemented"));
237 }
238 get isOriginalDeclaration() {
239 return dart.throw(new core.UnimplementedError("TypeMirror.isOriginalDeclar ation unimplemented"));
240 }
241 get isPrivate() {
242 return dart.throw(new core.UnimplementedError("TypeMirror.isPrivate unimpl emented"));
243 }
244 get isTopLevel() {
245 return dart.throw(new core.UnimplementedError("TypeMirror.isTopLevel unimp lemented"));
246 }
247 get location() {
248 return dart.throw(new core.UnimplementedError("TypeMirror.location unimple mented"));
249 }
250 get metadata() {
251 return dart.throw(new core.UnimplementedError("TypeMirror.metadata unimple mented"));
252 }
253 get originalDeclaration() {
254 return dart.throw(new core.UnimplementedError("TypeMirror.originalDeclarat ion unimplemented"));
255 }
256 get owner() {
257 return dart.throw(new core.UnimplementedError("TypeMirror.owner unimplemen ted"));
258 }
259 get qualifiedName() {
260 return dart.throw(new core.UnimplementedError("TypeMirror.qualifiedName un implemented"));
261 }
262 get simpleName() {
263 return dart.throw(new core.UnimplementedError("TypeMirror.simpleName unimp lemented"));
264 }
265 get typeArguments() {
266 return dart.throw(new core.UnimplementedError("TypeMirror.typeArguments un implemented"));
267 }
268 get typeVariables() {
269 return dart.throw(new core.UnimplementedError("TypeMirror.typeVariables un implemented"));
270 }
271 }
272 JsTypeMirror[dart.implements] = () => [mirrors.TypeMirror];
273 dart.defineNamedConstructor(JsTypeMirror, '_');
274 dart.setSignature(JsTypeMirror, {
275 constructors: () => ({_: [JsTypeMirror, [core.Type]]}),
276 methods: () => ({
277 isAssignableTo: [core.bool, [mirrors.TypeMirror]],
278 isSubtypeOf: [core.bool, [mirrors.TypeMirror]]
279 })
280 });
281 let _name = Symbol('_name');
282 class JsParameterMirror extends core.Object {
283 _(name, t, annotations) {
284 this[_name] = name;
285 this.type = new JsTypeMirror._(t);
286 this.metadata = core.List$(mirrors.InstanceMirror).from(annotations[dartx. map](dart.fn(a => new JsInstanceMirror._(a), JsInstanceMirror, [dart.dynamic]))) ;
287 }
288 get defaultValue() {
289 return dart.throw(new core.UnimplementedError("ParameterMirror.defaultValu es unimplemented"));
290 }
291 get hasDefaultValue() {
292 return dart.throw(new core.UnimplementedError("ParameterMirror.hasDefaultV alue unimplemented"));
293 }
294 get isConst() {
295 return dart.throw(new core.UnimplementedError("ParameterMirror.isConst uni mplemented"));
296 }
297 get isFinal() {
298 return dart.throw(new core.UnimplementedError("ParameterMirror.isFinal uni mplemented"));
299 }
300 get isNamed() {
301 return dart.throw(new core.UnimplementedError("ParameterMirror.isNamed uni mplemented"));
302 }
303 get isOptional() {
304 return dart.throw(new core.UnimplementedError("ParameterMirror.isOptional unimplemented"));
305 }
306 get isPrivate() {
307 return dart.throw(new core.UnimplementedError("ParameterMirror.isPrivate u nimplemented"));
308 }
309 get isStatic() {
310 return dart.throw(new core.UnimplementedError("ParameterMirror.isStatic un implemented"));
311 }
312 get isTopLevel() {
313 return dart.throw(new core.UnimplementedError("ParameterMirror.isTopLevel unimplemented"));
314 }
315 get location() {
316 return dart.throw(new core.UnimplementedError("ParameterMirror.location un implemented"));
317 }
318 get owner() {
319 return dart.throw(new core.UnimplementedError("ParameterMirror.owner unimp lemented"));
320 }
321 get qualifiedName() {
322 return dart.throw(new core.UnimplementedError("ParameterMirror.qualifiedNa me unimplemented"));
323 }
324 get simpleName() {
325 return dart.throw(new core.UnimplementedError("ParameterMirror.simpleName unimplemented"));
326 }
327 }
328 JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
329 dart.defineNamedConstructor(JsParameterMirror, '_');
330 dart.setSignature(JsParameterMirror, {
331 constructors: () => ({_: [JsParameterMirror, [core.String, core.Type, core.L ist]]})
332 });
333 let _method = Symbol('_method');
334 let _params = Symbol('_params');
335 let _createParameterMirrorList = Symbol('_createParameterMirrorList');
336 class JsMethodMirror extends core.Object {
337 _(cls, method) {
338 this[_method] = method;
339 this[_name] = getName(cls.simpleName);
340 this[_params] = null;
341 let ftype = exports._dart.classGetConstructorType(cls[_cls]);
342 this[_params] = this[_createParameterMirrorList](ftype);
343 }
344 get constructorName() {
345 return core.Symbol.new('');
346 }
347 get parameters() {
348 return this[_params];
349 }
350 [_createParameterMirrorList](ftype) {
351 if (ftype == null) {
352 return dart.list([], mirrors.ParameterMirror);
353 }
354 let args = dart.as(dart.dload(ftype, 'args'), core.List);
355 let opts = dart.as(dart.dload(ftype, 'optionals'), core.List);
356 let params = core.List$(mirrors.ParameterMirror).new(dart.notNull(args[dar tx.length]) + dart.notNull(opts[dartx.length]));
357 for (let i = 0; dart.notNull(i) < dart.notNull(args[dartx.length]); i = da rt.notNull(i) + 1) {
358 let type = args[dartx.get](i);
359 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
360 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a s(metadata, core.List));
361 params[dartx.set](i, param);
362 }
363 for (let i = 0; dart.notNull(i) < dart.notNull(opts[dartx.length]); i = da rt.notNull(i) + 1) {
364 let type = opts[dartx.get](i);
365 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(a rgs[dartx.length]) + dart.notNull(i));
366 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a s(metadata, core.List));
367 params[dartx.set](dart.notNull(i) + dart.notNull(args[dartx.length]), pa ram);
368 }
369 return params;
370 }
371 get isAbstract() {
372 return dart.throw(new core.UnimplementedError("MethodMirror.isAbstract uni mplemented"));
373 }
374 get isConstConstructor() {
375 return dart.throw(new core.UnimplementedError("MethodMirror.isConstConstru ctor unimplemented"));
376 }
377 get isConstructor() {
378 return dart.throw(new core.UnimplementedError("MethodMirror.isConstructor unimplemented"));
379 }
380 get isFactoryConstructor() {
381 return dart.throw(new core.UnimplementedError("MethodMirror.isFactoryConst ructor unimplemented"));
382 }
383 get isGenerativeConstructor() {
384 return dart.throw(new core.UnimplementedError("MethodMirror.isGenerativeCo nstructor unimplemented"));
385 }
386 get isGetter() {
387 return dart.throw(new core.UnimplementedError("MethodMirror.isGetter unimp lemented"));
388 }
389 get isOperator() {
390 return dart.throw(new core.UnimplementedError("MethodMirror.isOperator uni mplemented"));
391 }
392 get isPrivate() {
393 return dart.throw(new core.UnimplementedError("MethodMirror.isPrivate unim plemented"));
394 }
395 get isRedirectingConstructor() {
396 return dart.throw(new core.UnimplementedError("MethodMirror.isRedirectingC onstructor unimplemented"));
397 }
398 get isRegularMethod() {
399 return dart.throw(new core.UnimplementedError("MethodMirror.isRegularMetho d unimplemented"));
400 }
401 get isSetter() {
402 return dart.throw(new core.UnimplementedError("MethodMirror.isSetter unimp lemented"));
403 }
404 get isStatic() {
405 return dart.throw(new core.UnimplementedError("MethodMirror.isStatic unimp lemented"));
406 }
407 get isSynthetic() {
408 return dart.throw(new core.UnimplementedError("MethodMirror.isSynthetic un implemented"));
409 }
410 get isTopLevel() {
411 return dart.throw(new core.UnimplementedError("MethodMirror.isTopLevel uni mplemented"));
412 }
413 get location() {
414 return dart.throw(new core.UnimplementedError("MethodMirror.location unimp lemented"));
415 }
416 get metadata() {
417 return dart.throw(new core.UnimplementedError("MethodMirror.metadata unimp lemented"));
418 }
419 get owner() {
420 return dart.throw(new core.UnimplementedError("MethodMirror.owner unimplem ented"));
421 }
422 get qualifiedName() {
423 return dart.throw(new core.UnimplementedError("MethodMirror.qualifiedName unimplemented"));
424 }
425 get returnType() {
426 return dart.throw(new core.UnimplementedError("MethodMirror.returnType uni mplemented"));
427 }
428 get simpleName() {
429 return dart.throw(new core.UnimplementedError("MethodMirror.simpleName uni mplemented"));
430 }
431 get source() {
432 return dart.throw(new core.UnimplementedError("MethodMirror.source unimple mented"));
433 }
434 }
435 JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
436 dart.defineNamedConstructor(JsMethodMirror, '_');
437 dart.setSignature(JsMethodMirror, {
438 constructors: () => ({_: [JsMethodMirror, [JsClassMirror, dart.dynamic]]}),
439 methods: () => ({[_createParameterMirrorList]: [core.List$(mirrors.Parameter Mirror), [dart.dynamic]]})
440 });
441 // Exports:
442 exports.getName = getName;
443 exports.getSymbol = getSymbol;
444 exports.reflect = reflect;
445 exports.reflectType = reflectType;
446 exports.JsInstanceMirror = JsInstanceMirror;
447 exports.JsClassMirror = JsClassMirror;
448 exports.JsTypeMirror = JsTypeMirror;
449 exports.JsParameterMirror = JsParameterMirror;
450 exports.JsMethodMirror = JsMethodMirror;
451 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698