Skip to content

Commit 87577db

Browse files
committed
Add dart:js_util library and tests to ddc. This library is already added to dart2js and dartium.
BUG= [email protected] Review URL: https://codereview.chromium.org/2269963005 .
1 parent 9d8ae16 commit 87577db

File tree

6 files changed

+587
-0
lines changed

6 files changed

+587
-0
lines changed

pkg/dev_compiler/lib/runtime/dart_sdk.js

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
2020
const core = Object.create(null);
2121
const isolate = Object.create(null);
2222
const js = Object.create(null);
23+
const js_util = Object.create(null);
2324
const math = Object.create(null);
2425
const mirrors = Object.create(null);
2526
const typed_data = Object.create(null);
@@ -629,6 +630,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
629630
let dynamicAnddynamicAndFnToObject = () => (dynamicAnddynamicAndFnToObject = dart.constFn(dart.definiteFunctionType(core.Object, [dart.dynamic, dart.dynamic, dynamicTodynamic()])))();
630631
let FToF = () => (FToF = dart.constFn(dart.definiteFunctionType(F => [F, [F]])))();
631632
let FunctionToFunction = () => (FunctionToFunction = dart.constFn(dart.definiteFunctionType(core.Function, [core.Function])))();
633+
let FunctionAndListTodynamic = () => (FunctionAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Function, core.List])))();
632634
let TAndTToT = () => (TAndTToT = dart.constFn(dart.definiteFunctionType(T => [T, [T, T]])))();
633635
let TAndTToT$ = () => (TAndTToT$ = dart.constFn(dart.definiteFunctionType(T => [T, [T, T]])))();
634636
let numAndnumTodouble = () => (numAndnumTodouble = dart.constFn(dart.definiteFunctionType(core.double, [core.num, core.num])))();
@@ -33773,6 +33775,109 @@ dart_library.library('dart_sdk', null, /* Imports */[
3377333775
return ret;
3377433776
};
3377533777
dart.fn(js.allowInteropCaptureThis, FunctionToFunction());
33778+
js_util.jsify = function(object) {
33779+
if (!core.Map.is(object) && !core.Iterable.is(object)) {
33780+
dart.throw(new core.ArgumentError("object must be a Map or Iterable"));
33781+
}
33782+
return js_util._convertDataTree(object);
33783+
};
33784+
dart.fn(js_util.jsify, dynamicTodynamic$());
33785+
js_util._convertDataTree = function(data) {
33786+
let _convertedObjects = collection.HashMap.identity();
33787+
function _convert(o) {
33788+
if (dart.test(_convertedObjects.containsKey(o))) {
33789+
return _convertedObjects.get(o);
33790+
}
33791+
if (core.Map.is(o)) {
33792+
let convertedMap = {};
33793+
_convertedObjects.set(o, convertedMap);
33794+
for (let key of o[dartx.keys]) {
33795+
convertedMap[key] = _convert(o[dartx.get](key));
33796+
}
33797+
return convertedMap;
33798+
} else if (core.Iterable.is(o)) {
33799+
let convertedList = [];
33800+
_convertedObjects.set(o, convertedList);
33801+
convertedList[dartx.addAll](o[dartx.map](dart.dynamic)(_convert));
33802+
return convertedList;
33803+
} else {
33804+
return o;
33805+
}
33806+
}
33807+
dart.fn(_convert, dynamicTodynamic$());
33808+
return _convert(data);
33809+
};
33810+
dart.fn(js_util._convertDataTree, dynamicTodynamic$());
33811+
js_util.newObject = function() {
33812+
return {};
33813+
};
33814+
dart.fn(js_util.newObject, VoidTodynamic$());
33815+
js_util.hasProperty = function(o, name) {
33816+
return name in o;
33817+
};
33818+
dart.fn(js_util.hasProperty, dynamicAnddynamicTodynamic$());
33819+
js_util.getProperty = function(o, name) {
33820+
return o[name];
33821+
};
33822+
dart.fn(js_util.getProperty, dynamicAnddynamicTodynamic$());
33823+
js_util.setProperty = function(o, name, value) {
33824+
return o[name] = value;
33825+
};
33826+
dart.fn(js_util.setProperty, dynamicAnddynamicAnddynamicTodynamic());
33827+
js_util.callMethod = function(o, method, args) {
33828+
return o[method].apply(o, args);
33829+
};
33830+
dart.fn(js_util.callMethod, dynamicAndStringAndListTodynamic());
33831+
js_util.instanceof = function(o, type) {
33832+
return o instanceof type;
33833+
};
33834+
dart.fn(js_util.instanceof, dynamicAndFunctionTodynamic());
33835+
js_util.callConstructor = function(constr, arguments$) {
33836+
if (arguments$ == null) {
33837+
return new constr();
33838+
}
33839+
if (arguments$ instanceof Array) {
33840+
let argumentCount = arguments$.length;
33841+
switch (argumentCount) {
33842+
case 0:
33843+
{
33844+
return new constr();
33845+
}
33846+
case 1:
33847+
{
33848+
let arg0 = arguments$[0];
33849+
return new constr(arg0);
33850+
}
33851+
case 2:
33852+
{
33853+
let arg0 = arguments$[0];
33854+
let arg1 = arguments$[1];
33855+
return new constr(arg0, arg1);
33856+
}
33857+
case 3:
33858+
{
33859+
let arg0 = arguments$[0];
33860+
let arg1 = arguments$[1];
33861+
let arg2 = arguments$[2];
33862+
return new constr(arg0, arg1, arg2);
33863+
}
33864+
case 4:
33865+
{
33866+
let arg0 = arguments$[0];
33867+
let arg1 = arguments$[1];
33868+
let arg2 = arguments$[2];
33869+
let arg3 = arguments$[3];
33870+
return new constr(arg0, arg1, arg2, arg3);
33871+
}
33872+
}
33873+
}
33874+
let args = [null];
33875+
args[dartx.addAll](arguments$);
33876+
let factoryFunction = constr.bind.apply(constr, args);
33877+
String(factoryFunction);
33878+
return new factoryFunction();
33879+
};
33880+
dart.fn(js_util.callConstructor, FunctionAndListTodynamic());
3377633881
math.E = 2.718281828459045;
3377733882
math.LN10 = 2.302585092994046;
3377833883
math.LN2 = 0.6931471805599453;
@@ -84098,6 +84203,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
8409884203
exports.core = core;
8409984204
exports.isolate = isolate;
8410084205
exports.js = js;
84206+
exports.js_util = js_util;
8410184207
exports.math = math;
8410284208
exports.mirrors = mirrors;
8410384209
exports.typed_data = typed_data;

pkg/dev_compiler/test/browser/language_tests.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2629,6 +2629,7 @@
26292629
'js_function_getter_trust_types_test': 'unittest',
26302630
'js_interop_1_test': 'unittest',
26312631
'js_test': 'unittest',
2632+
'js_util_test': 'unittest',
26322633
'js_typed_interop_anonymous2_exp_test': 'unittest',
26332634
'js_typed_interop_anonymous2_test': 'unittest',
26342635
'js_typed_interop_anonymous_exp_test': 'unittest',

0 commit comments

Comments
 (0)