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

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

Issue 1195523002: Handle dynamic as bottom inside of function type reps (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Fix typo in comment Created 5 years, 6 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
« no previous file with comments | « lib/runtime/dart/isolate.js ('k') | lib/runtime/dart/math.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 dart_library.library('dart/js', null, /* Imports */[ 1 dart_library.library('dart/js', null, /* Imports */[
2 "dart_runtime/dart", 2 "dart_runtime/dart",
3 'dart/_foreign_helper', 3 'dart/_foreign_helper',
4 'dart/core', 4 'dart/core',
5 'dart/collection', 5 'dart/collection',
6 'dart/typed_data', 6 'dart/typed_data',
7 'dart/_js_helper' 7 'dart/_js_helper'
8 ], /* Lazy imports */[ 8 ], /* Lazy imports */[
9 ], function(exports, dart, _foreign_helper, core, collection, typed_data, _js_he lper) { 9 ], function(exports, dart, _foreign_helper, core, collection, typed_data, _js_he lper) {
10 'use strict'; 10 'use strict';
11 let dartx = dart.dartx; 11 let dartx = dart.dartx;
12 dart.defineLazyProperties(exports, { 12 dart.defineLazyProperties(exports, {
13 get context() { 13 get context() {
14 return _wrapToDart(self); 14 return _wrapToDart(self);
15 } 15 }
16 }); 16 });
17 function _convertDartFunction(f, opts) { 17 function _convertDartFunction(f, opts) {
18 let captureThis = opts && 'captureThis' in opts ? opts.captureThis : false; 18 let captureThis = opts && 'captureThis' in opts ? opts.captureThis : false;
19 return function(_call, f, captureThis) { 19 return function(_call, f, captureThis) {
20 return function() { 20 return function() {
21 return _call(f, captureThis, this, Array.prototype.slice.apply(arguments $)); 21 return _call(f, captureThis, this, Array.prototype.slice.apply(arguments $));
22 }; 22 };
23 }(_foreign_helper.DART_CLOSURE_TO_JS(_callDartFunction), f, captureThis); 23 }(_foreign_helper.DART_CLOSURE_TO_JS(_callDartFunction), f, captureThis);
24 } 24 }
25 dart.fn(_convertDartFunction, core.Object, [core.Function], {captureThis: core .bool}); 25 dart.fn(_convertDartFunction, dart.dynamic, [core.Function], {captureThis: cor e.bool});
26 function _callDartFunction(callback, captureThis, self, arguments$) { 26 function _callDartFunction(callback, captureThis, self, arguments$) {
27 if (dart.notNull(captureThis)) { 27 if (dart.notNull(captureThis)) {
28 let _ = [self]; 28 let _ = [self];
29 _[dartx.addAll](arguments$); 29 _[dartx.addAll](arguments$);
30 arguments$ = _; 30 arguments$ = _;
31 } 31 }
32 let dartArgs = core.List.from(arguments$[dartx.map](_convertToDart)); 32 let dartArgs = core.List.from(arguments$[dartx.map](_convertToDart));
33 return _convertToJS(core.Function.apply(dart.as(callback, core.Function), da rtArgs)); 33 return _convertToJS(core.Function.apply(dart.as(callback, core.Function), da rtArgs));
34 } 34 }
35 dart.fn(_callDartFunction, core.Object, [core.Object, core.bool, core.Object, core.List]); 35 dart.fn(_callDartFunction, dart.dynamic, [dart.dynamic, core.bool, dart.dynami c, core.List]);
36 let _jsObject = Symbol('_jsObject'); 36 let _jsObject = Symbol('_jsObject');
37 class JsObject extends core.Object { 37 class JsObject extends core.Object {
38 _fromJs(jsObject) { 38 _fromJs(jsObject) {
39 this[_jsObject] = jsObject; 39 this[_jsObject] = jsObject;
40 dart.assert(this[_jsObject] != null); 40 dart.assert(this[_jsObject] != null);
41 } 41 }
42 static new(constructor, arguments$) { 42 static new(constructor, arguments$) {
43 if (arguments$ === void 0) 43 if (arguments$ === void 0)
44 arguments$ = null; 44 arguments$ = null;
45 let constr = _convertToJS(constructor); 45 let constr = _convertToJS(constructor);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 args = null; 136 args = null;
137 if (!(typeof method == 'string') && !dart.is(method, core.num)) { 137 if (!(typeof method == 'string') && !dart.is(method, core.num)) {
138 throw new core.ArgumentError("method is not a String or num"); 138 throw new core.ArgumentError("method is not a String or num");
139 } 139 }
140 return _convertToDart(this[_jsObject][method].apply(this[_jsObject], args == null ? null : core.List.from(args[dartx.map](_convertToJS)))); 140 return _convertToDart(this[_jsObject][method].apply(this[_jsObject], args == null ? null : core.List.from(args[dartx.map](_convertToJS))));
141 } 141 }
142 } 142 }
143 dart.defineNamedConstructor(JsObject, '_fromJs'); 143 dart.defineNamedConstructor(JsObject, '_fromJs');
144 dart.setSignature(JsObject, { 144 dart.setSignature(JsObject, {
145 constructors: () => ({ 145 constructors: () => ({
146 _fromJs: [JsObject, [core.Object]], 146 _fromJs: [JsObject, [dart.dynamic]],
147 new: [JsObject, [JsFunction], [core.List]], 147 new: [JsObject, [JsFunction], [core.List]],
148 fromBrowserObject: [JsObject, [core.Object]], 148 fromBrowserObject: [JsObject, [dart.dynamic]],
149 jsify: [JsObject, [core.Object]] 149 jsify: [JsObject, [dart.dynamic]]
150 }), 150 }),
151 methods: () => ({ 151 methods: () => ({
152 get: [core.Object, [core.Object]], 152 get: [dart.dynamic, [dart.dynamic]],
153 set: [core.Object, [core.Object, core.Object]], 153 set: [dart.dynamic, [dart.dynamic, dart.dynamic]],
154 hasProperty: [core.bool, [core.Object]], 154 hasProperty: [core.bool, [dart.dynamic]],
155 deleteProperty: [dart.void, [core.Object]], 155 deleteProperty: [dart.void, [dart.dynamic]],
156 instanceof: [core.bool, [JsFunction]], 156 instanceof: [core.bool, [JsFunction]],
157 callMethod: [core.Object, [core.Object], [core.List]] 157 callMethod: [dart.dynamic, [dart.dynamic], [core.List]]
158 }), 158 }),
159 statics: () => ({_convertDataTree: [core.Object, [core.Object]]}), 159 statics: () => ({_convertDataTree: [dart.dynamic, [dart.dynamic]]}),
160 names: ['_convertDataTree'] 160 names: ['_convertDataTree']
161 }); 161 });
162 class JsFunction extends JsObject { 162 class JsFunction extends JsObject {
163 static withThis(f) { 163 static withThis(f) {
164 let jsFunc = _convertDartFunction(f, {captureThis: true}); 164 let jsFunc = _convertDartFunction(f, {captureThis: true});
165 return new JsFunction._fromJs(jsFunc); 165 return new JsFunction._fromJs(jsFunc);
166 } 166 }
167 _fromJs(jsObject) { 167 _fromJs(jsObject) {
168 super._fromJs(jsObject); 168 super._fromJs(jsObject);
169 } 169 }
170 apply(args, opts) { 170 apply(args, opts) {
171 let thisArg = opts && 'thisArg' in opts ? opts.thisArg : null; 171 let thisArg = opts && 'thisArg' in opts ? opts.thisArg : null;
172 return _convertToDart(this[_jsObject].apply(_convertToJS(thisArg), args == null ? null : core.List.from(args[dartx.map](_convertToJS)))); 172 return _convertToDart(this[_jsObject].apply(_convertToJS(thisArg), args == null ? null : core.List.from(args[dartx.map](_convertToJS))));
173 } 173 }
174 } 174 }
175 dart.defineNamedConstructor(JsFunction, '_fromJs'); 175 dart.defineNamedConstructor(JsFunction, '_fromJs');
176 dart.setSignature(JsFunction, { 176 dart.setSignature(JsFunction, {
177 constructors: () => ({ 177 constructors: () => ({
178 withThis: [JsFunction, [core.Function]], 178 withThis: [JsFunction, [core.Function]],
179 _fromJs: [JsFunction, [core.Object]] 179 _fromJs: [JsFunction, [dart.dynamic]]
180 }), 180 }),
181 methods: () => ({apply: [core.Object, [core.List], {thisArg: core.Object}]}) 181 methods: () => ({apply: [dart.dynamic, [core.List], {thisArg: dart.dynamic}] })
182 }); 182 });
183 let _checkIndex = Symbol('_checkIndex'); 183 let _checkIndex = Symbol('_checkIndex');
184 let _checkInsertIndex = Symbol('_checkInsertIndex'); 184 let _checkInsertIndex = Symbol('_checkInsertIndex');
185 let JsArray$ = dart.generic(function(E) { 185 let JsArray$ = dart.generic(function(E) {
186 class JsArray extends dart.mixin(JsObject, collection.ListMixin$(E)) { 186 class JsArray extends dart.mixin(JsObject, collection.ListMixin$(E)) {
187 JsArray() { 187 JsArray() {
188 super._fromJs([]); 188 super._fromJs([]);
189 } 189 }
190 from(other) { 190 from(other) {
191 super._fromJs((() => { 191 super._fromJs((() => {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 dart.as(compare, dart.functionType(core.int, [E, E])); 285 dart.as(compare, dart.functionType(core.int, [E, E]));
286 this.callMethod('sort', compare == null ? [] : [compare]); 286 this.callMethod('sort', compare == null ? [] : [compare]);
287 } 287 }
288 } 288 }
289 dart.defineNamedConstructor(JsArray, 'from'); 289 dart.defineNamedConstructor(JsArray, 'from');
290 dart.defineNamedConstructor(JsArray, '_fromJs'); 290 dart.defineNamedConstructor(JsArray, '_fromJs');
291 dart.setSignature(JsArray, { 291 dart.setSignature(JsArray, {
292 constructors: () => ({ 292 constructors: () => ({
293 JsArray: [JsArray$(E), []], 293 JsArray: [JsArray$(E), []],
294 from: [JsArray$(E), [core.Iterable$(E)]], 294 from: [JsArray$(E), [core.Iterable$(E)]],
295 _fromJs: [JsArray$(E), [core.Object]] 295 _fromJs: [JsArray$(E), [dart.dynamic]]
296 }), 296 }),
297 methods: () => ({ 297 methods: () => ({
298 [_checkIndex]: [core.Object, [core.int]], 298 [_checkIndex]: [dart.dynamic, [core.int]],
299 [_checkInsertIndex]: [core.Object, [core.int]], 299 [_checkInsertIndex]: [dart.dynamic, [core.int]],
300 get: [E, [core.Object]], 300 get: [E, [dart.dynamic]],
301 set: [dart.void, [core.Object, E]], 301 set: [dart.void, [dart.dynamic, E]],
302 add: [dart.void, [E]], 302 add: [dart.void, [E]],
303 addAll: [dart.void, [core.Iterable$(E)]], 303 addAll: [dart.void, [core.Iterable$(E)]],
304 insert: [dart.void, [core.int, E]], 304 insert: [dart.void, [core.int, E]],
305 removeAt: [E, [core.int]], 305 removeAt: [E, [core.int]],
306 removeLast: [E, []], 306 removeLast: [E, []],
307 setRange: [dart.void, [core.int, core.int, core.Iterable$(E)], [core.int ]], 307 setRange: [dart.void, [core.int, core.int, core.Iterable$(E)], [core.int ]],
308 sort: [dart.void, [], [dart.functionType(core.int, [E, E])]] 308 sort: [dart.void, [], [dart.functionType(core.int, [E, E])]]
309 }), 309 }),
310 statics: () => ({_checkRange: [core.Object, [core.int, core.int, core.int] ]}), 310 statics: () => ({_checkRange: [dart.dynamic, [core.int, core.int, core.int ]]}),
311 names: ['_checkRange'] 311 names: ['_checkRange']
312 }); 312 });
313 dart.defineExtensionMembers(JsArray, [ 313 dart.defineExtensionMembers(JsArray, [
314 'get', 314 'get',
315 'set', 315 'set',
316 'add', 316 'add',
317 'addAll', 317 'addAll',
318 'insert', 318 'insert',
319 'removeAt', 319 'removeAt',
320 'removeLast', 320 'removeLast',
(...skipping 20 matching lines...) Expand all
341 if (dart.notNull(_isExtensible(o)) && !dart.notNull(_hasOwnProperty(o, name) )) { 341 if (dart.notNull(_isExtensible(o)) && !dart.notNull(_hasOwnProperty(o, name) )) {
342 try { 342 try {
343 Object.defineProperty(o, name, {value: value}); 343 Object.defineProperty(o, name, {value: value});
344 return true; 344 return true;
345 } catch (e) { 345 } catch (e) {
346 } 346 }
347 347
348 } 348 }
349 return false; 349 return false;
350 } 350 }
351 dart.fn(_defineProperty, core.bool, [core.Object, core.String, core.Object]); 351 dart.fn(_defineProperty, core.bool, [dart.dynamic, core.String, dart.dynamic]) ;
352 function _hasOwnProperty(o, name) { 352 function _hasOwnProperty(o, name) {
353 return Object.prototype.hasOwnProperty.call(o, name); 353 return Object.prototype.hasOwnProperty.call(o, name);
354 } 354 }
355 dart.fn(_hasOwnProperty, core.bool, [core.Object, core.String]); 355 dart.fn(_hasOwnProperty, core.bool, [dart.dynamic, core.String]);
356 function _isExtensible(o) { 356 function _isExtensible(o) {
357 return Object.isExtensible(o); 357 return Object.isExtensible(o);
358 } 358 }
359 dart.fn(_isExtensible, core.bool, [core.Object]); 359 dart.fn(_isExtensible, core.bool, [dart.dynamic]);
360 function _getOwnProperty(o, name) { 360 function _getOwnProperty(o, name) {
361 if (dart.notNull(_hasOwnProperty(o, name))) { 361 if (dart.notNull(_hasOwnProperty(o, name))) {
362 return o[name]; 362 return o[name];
363 } 363 }
364 return null; 364 return null;
365 } 365 }
366 dart.fn(_getOwnProperty, core.Object, [core.Object, core.String]); 366 dart.fn(_getOwnProperty, core.Object, [dart.dynamic, core.String]);
367 function _isLocalObject(o) { 367 function _isLocalObject(o) {
368 return o instanceof Object; 368 return o instanceof Object;
369 } 369 }
370 dart.fn(_isLocalObject, core.bool, [core.Object]); 370 dart.fn(_isLocalObject, core.bool, [dart.dynamic]);
371 dart.defineLazyProperties(exports, { 371 dart.defineLazyProperties(exports, {
372 get _dartProxyCtor() { 372 get _dartProxyCtor() {
373 return function DartObject(o) { 373 return function DartObject(o) {
374 this.o = o; 374 this.o = o;
375 }; 375 };
376 } 376 }
377 }); 377 });
378 function _convertToJS(o) { 378 function _convertToJS(o) {
379 if (o == null || typeof o == 'string' || dart.is(o, core.num) || typeof o == 'boolean') { 379 if (o == null || typeof o == 'string' || dart.is(o, core.num) || typeof o == 'boolean') {
380 return o; 380 return o;
381 } else if (dart.is(o, core.Object) || dart.is(o, core.Object) || dart.is(o, core.Object) || dart.is(o, core.Object) || dart.is(o, core.Object) || dart.is(o, typed_data.TypedData) || dart.is(o, core.Object)) { 381 } else if (dart.is(o, dart.dynamic) || dart.is(o, dart.dynamic) || dart.is(o , dart.dynamic) || dart.is(o, dart.dynamic) || dart.is(o, dart.dynamic) || dart. is(o, typed_data.TypedData) || dart.is(o, dart.dynamic)) {
382 return o; 382 return o;
383 } else if (dart.is(o, core.DateTime)) { 383 } else if (dart.is(o, core.DateTime)) {
384 return _js_helper.Primitives.lazyAsJsDate(o); 384 return _js_helper.Primitives.lazyAsJsDate(o);
385 } else if (dart.is(o, JsObject)) { 385 } else if (dart.is(o, JsObject)) {
386 return dart.dload(o, _jsObject); 386 return dart.dload(o, _jsObject);
387 } else if (dart.is(o, core.Function)) { 387 } else if (dart.is(o, core.Function)) {
388 return _getJsProxy(o, _JS_FUNCTION_PROPERTY_NAME, dart.fn(o => { 388 return _getJsProxy(o, _JS_FUNCTION_PROPERTY_NAME, dart.fn(o => {
389 let jsFunction = _convertDartFunction(dart.as(o, core.Function)); 389 let jsFunction = _convertDartFunction(dart.as(o, core.Function));
390 _defineProperty(jsFunction, exports._DART_CLOSURE_PROPERTY_NAME, o); 390 _defineProperty(jsFunction, exports._DART_CLOSURE_PROPERTY_NAME, o);
391 return jsFunction; 391 return jsFunction;
392 })); 392 }));
393 } else { 393 } else {
394 let ctor = exports._dartProxyCtor; 394 let ctor = exports._dartProxyCtor;
395 return _getJsProxy(o, _JS_OBJECT_PROPERTY_NAME, dart.fn(o => new ctor(o))) ; 395 return _getJsProxy(o, _JS_OBJECT_PROPERTY_NAME, dart.fn(o => new ctor(o))) ;
396 } 396 }
397 } 397 }
398 dart.fn(_convertToJS); 398 dart.fn(_convertToJS);
399 function _getJsProxy(o, propertyName, createProxy) { 399 function _getJsProxy(o, propertyName, createProxy) {
400 let jsProxy = _getOwnProperty(o, propertyName); 400 let jsProxy = _getOwnProperty(o, propertyName);
401 if (jsProxy == null) { 401 if (jsProxy == null) {
402 jsProxy = dart.dcall(createProxy, o); 402 jsProxy = dart.dcall(createProxy, o);
403 _defineProperty(o, propertyName, jsProxy); 403 _defineProperty(o, propertyName, jsProxy);
404 } 404 }
405 return jsProxy; 405 return jsProxy;
406 } 406 }
407 dart.fn(_getJsProxy, core.Object, [core.Object, core.String, dart.functionType (core.Object, [dart.bottom])]); 407 dart.fn(_getJsProxy, core.Object, [dart.dynamic, core.String, dart.functionTyp e(dart.dynamic, [dart.dynamic])]);
408 function _convertToDart(o) { 408 function _convertToDart(o) {
409 if (o == null || typeof o == "string" || typeof o == "number" || typeof o == "boolean") { 409 if (o == null || typeof o == "string" || typeof o == "number" || typeof o == "boolean") {
410 return o; 410 return o;
411 } else if (dart.notNull(_isLocalObject(o)) && (dart.is(o, core.Object) || da rt.is(o, core.Object) || dart.is(o, core.Object) || dart.is(o, core.Object) || d art.is(o, core.Object) || dart.is(o, typed_data.TypedData) || dart.is(o, core.Ob ject))) { 411 } else if (dart.notNull(_isLocalObject(o)) && (dart.is(o, dart.dynamic) || d art.is(o, dart.dynamic) || dart.is(o, dart.dynamic) || dart.is(o, dart.dynamic) || dart.is(o, dart.dynamic) || dart.is(o, typed_data.TypedData) || dart.is(o, da rt.dynamic))) {
412 return o; 412 return o;
413 } else if (o instanceof Date) { 413 } else if (o instanceof Date) {
414 let ms = o.getTime(); 414 let ms = o.getTime();
415 return new core.DateTime.fromMillisecondsSinceEpoch(ms); 415 return new core.DateTime.fromMillisecondsSinceEpoch(ms);
416 } else if (o.constructor === exports._dartProxyCtor) { 416 } else if (o.constructor === exports._dartProxyCtor) {
417 return o.o; 417 return o.o;
418 } else { 418 } else {
419 return _wrapToDart(o); 419 return _wrapToDart(o);
420 } 420 }
421 } 421 }
422 dart.fn(_convertToDart, core.Object, [core.Object]); 422 dart.fn(_convertToDart, core.Object, [dart.dynamic]);
423 function _wrapToDart(o) { 423 function _wrapToDart(o) {
424 if (typeof o == "function") { 424 if (typeof o == "function") {
425 return dart.as(_getDartProxy(o, exports._DART_CLOSURE_PROPERTY_NAME, dart. fn(o => new JsFunction._fromJs(o), JsFunction, [core.Object])), JsObject); 425 return dart.as(_getDartProxy(o, exports._DART_CLOSURE_PROPERTY_NAME, dart. fn(o => new JsFunction._fromJs(o), JsFunction, [dart.dynamic])), JsObject);
426 } else if (o instanceof Array) { 426 } else if (o instanceof Array) {
427 return dart.as(_getDartProxy(o, exports._DART_OBJECT_PROPERTY_NAME, dart.f n(o => new JsArray._fromJs(o), JsArray, [core.Object])), JsObject); 427 return dart.as(_getDartProxy(o, exports._DART_OBJECT_PROPERTY_NAME, dart.f n(o => new JsArray._fromJs(o), JsArray, [dart.dynamic])), JsObject);
428 } else { 428 } else {
429 return dart.as(_getDartProxy(o, exports._DART_OBJECT_PROPERTY_NAME, dart.f n(o => new JsObject._fromJs(o), JsObject, [core.Object])), JsObject); 429 return dart.as(_getDartProxy(o, exports._DART_OBJECT_PROPERTY_NAME, dart.f n(o => new JsObject._fromJs(o), JsObject, [dart.dynamic])), JsObject);
430 } 430 }
431 } 431 }
432 dart.fn(_wrapToDart, JsObject, [core.Object]); 432 dart.fn(_wrapToDart, JsObject, [dart.dynamic]);
433 function _getDartProxy(o, propertyName, createProxy) { 433 function _getDartProxy(o, propertyName, createProxy) {
434 let dartProxy = _getOwnProperty(o, propertyName); 434 let dartProxy = _getOwnProperty(o, propertyName);
435 if (dartProxy == null || !dart.notNull(_isLocalObject(o))) { 435 if (dartProxy == null || !dart.notNull(_isLocalObject(o))) {
436 dartProxy = dart.dcall(createProxy, o); 436 dartProxy = dart.dcall(createProxy, o);
437 _defineProperty(o, propertyName, dartProxy); 437 _defineProperty(o, propertyName, dartProxy);
438 } 438 }
439 return dartProxy; 439 return dartProxy;
440 } 440 }
441 dart.fn(_getDartProxy, core.Object, [core.Object, core.String, dart.functionTy pe(core.Object, [dart.bottom])]); 441 dart.fn(_getDartProxy, core.Object, [dart.dynamic, core.String, dart.functionT ype(dart.dynamic, [dart.dynamic])]);
442 let __CastType0$ = dart.generic(function(E) { 442 let __CastType0$ = dart.generic(function(E) {
443 let __CastType0 = dart.typedef('__CastType0', () => dart.functionType(core.O bject, [E])); 443 let __CastType0 = dart.typedef('__CastType0', () => dart.functionType(dart.d ynamic, [E]));
444 return __CastType0; 444 return __CastType0;
445 }); 445 });
446 let __CastType0 = __CastType0$(); 446 let __CastType0 = __CastType0$();
447 // Exports: 447 // Exports:
448 exports.JsObject = JsObject; 448 exports.JsObject = JsObject;
449 exports.JsFunction = JsFunction; 449 exports.JsFunction = JsFunction;
450 exports.JsArray$ = JsArray$; 450 exports.JsArray$ = JsArray$;
451 exports.JsArray = JsArray; 451 exports.JsArray = JsArray;
452 }); 452 });
OLDNEW
« no previous file with comments | « lib/runtime/dart/isolate.js ('k') | lib/runtime/dart/math.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698