Skip to content

Commit 81fc365

Browse files
author
John Messerly
committed
fixes #193, factory constructors as static methods
R=vsm@google.com Review URL: https://codereview.chromium.org/1156993015
1 parent a73dec2 commit 81fc365

17 files changed

+596
-687
lines changed

pkg/dev_compiler/.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ packages
1212
.pub/
1313
node_modules
1414

15-
# Or our test output folder
15+
# Or our test outputs
1616
test/codegen/actual/
1717
test/dart_codegen/actual/
18+
test/generated_sdk/sdk_errors.txt
1819

1920
# Include when developing application packages.
2021
pubspec.lock

pkg/dev_compiler/lib/runtime/dart/_interceptors.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ var _js_embedded_names = dart.import(_js_embedded_names);
985985
function _symbolMapToStringMap(map) {
986986
if (map == null)
987987
return null;
988-
let result = new (core.Map$(core.String, core.Object))();
988+
let result = core.Map$(core.String, core.Object).new();
989989
map.forEach(dart.fn((key, value) => {
990990
result.set(_symbolToString(key), value);
991991
}, core.Object, [core.Symbol, core.Object]));

pkg/dev_compiler/lib/runtime/dart/_internal.js

+19-19
Original file line numberDiff line numberDiff line change
@@ -219,18 +219,18 @@ var _js_primitives = dart.lazyImport(_js_primitives);
219219
let growable = opts && 'growable' in opts ? opts.growable : true;
220220
let result = null;
221221
if (growable) {
222-
result = new (core.List$(E))();
222+
result = core.List$(E).new();
223223
result[core.$length] = this[core.$length];
224224
} else {
225-
result = new (core.List$(E))(this[core.$length]);
225+
result = core.List$(E).new(this[core.$length]);
226226
}
227227
for (let i = 0; dart.notNull(i) < dart.notNull(this[core.$length]); i = dart.notNull(i) + 1) {
228228
result[core.$set](i, this[core.$elementAt](i));
229229
}
230230
return result;
231231
}
232232
[core.$toSet]() {
233-
let result = new (core.Set$(E))();
233+
let result = core.Set$(E).new();
234234
for (let i = 0; dart.notNull(i) < dart.notNull(this[core.$length]); i = dart.notNull(i) + 1) {
235235
result.add(this[core.$elementAt](i));
236236
}
@@ -306,7 +306,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
306306
[core.$elementAt](index) {
307307
let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index);
308308
if (dart.notNull(index) < 0 || dart.notNull(realIndex) >= dart.notNull(this[_endIndex])) {
309-
throw new core.RangeError.index(index, this, "index");
309+
throw core.RangeError.index(index, this, "index");
310310
}
311311
return this[_iterable][core.$elementAt](realIndex);
312312
}
@@ -339,10 +339,10 @@ var _js_primitives = dart.lazyImport(_js_primitives);
339339
if (dart.notNull(length) < 0)
340340
length = 0;
341341
let result = growable ? (() => {
342-
let _ = new (core.List$(E))();
342+
let _ = core.List$(E).new();
343343
_[core.$length] = length;
344344
return _;
345-
})() : new (core.List$(E))(length);
345+
})() : core.List$(E).new(length);
346346
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
347347
result[core.$set](i, this[_iterable][core.$elementAt](dart.notNull(start) + dart.notNull(i)));
348348
if (dart.notNull(this[_iterable][core.$length]) < dart.notNull(end))
@@ -407,7 +407,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
407407
let _f = dart.JsSymbol('_f');
408408
let MappedIterable$ = dart.generic(function(S, T) {
409409
class MappedIterable extends collection.IterableBase$(T) {
410-
MappedIterable(iterable, func) {
410+
static new(iterable, func) {
411411
if (dart.is(iterable, EfficientLength)) {
412412
return new (EfficientLengthMappedIterable$(S, T))(iterable, func);
413413
}
@@ -443,7 +443,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
443443
dart.defineNamedConstructor(MappedIterable, '_');
444444
dart.setSignature(MappedIterable, {
445445
constructors: () => ({
446-
MappedIterable: [MappedIterable$(S, T), [core.Iterable, dart.functionType(T, [S])]],
446+
new: [MappedIterable$(S, T), [core.Iterable, dart.functionType(T, [S])]],
447447
_: [MappedIterable$(S, T), [core.Iterable$(S), dart.functionType(T, [S])]]
448448
}),
449449
methods: () => ({[core.$elementAt]: [T, [core.int]]})
@@ -627,7 +627,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
627627
let _takeCount = dart.JsSymbol('_takeCount');
628628
let TakeIterable$ = dart.generic(function(E) {
629629
class TakeIterable extends collection.IterableBase$(E) {
630-
TakeIterable(iterable, takeCount) {
630+
static new(iterable, takeCount) {
631631
if (!(typeof takeCount == 'number') || dart.notNull(takeCount) < 0) {
632632
throw new core.ArgumentError(takeCount);
633633
}
@@ -648,7 +648,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
648648
dart.defineNamedConstructor(TakeIterable, '_');
649649
dart.setSignature(TakeIterable, {
650650
constructors: () => ({
651-
TakeIterable: [TakeIterable$(E), [core.Iterable$(E), core.int]],
651+
new: [TakeIterable$(E), [core.Iterable$(E), core.int]],
652652
_: [TakeIterable$(E), [core.Iterable$(E), core.int]]
653653
})
654654
});
@@ -753,7 +753,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
753753
let _skipCount = dart.JsSymbol('_skipCount');
754754
let SkipIterable$ = dart.generic(function(E) {
755755
class SkipIterable extends collection.IterableBase$(E) {
756-
SkipIterable(iterable, count) {
756+
static new(iterable, count) {
757757
if (dart.is(iterable, EfficientLength)) {
758758
return new (EfficientLengthSkipIterable$(E))(iterable, count);
759759
}
@@ -782,7 +782,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
782782
dart.defineNamedConstructor(SkipIterable, '_');
783783
dart.setSignature(SkipIterable, {
784784
constructors: () => ({
785-
SkipIterable: [SkipIterable$(E), [core.Iterable$(E), core.int]],
785+
new: [SkipIterable$(E), [core.Iterable$(E), core.int]],
786786
_: [SkipIterable$(E), [core.Iterable$(E), core.int]]
787787
}),
788788
methods: () => ({[core.$skip]: [core.Iterable$(E), [core.int]]})
@@ -982,10 +982,10 @@ var _js_primitives = dart.lazyImport(_js_primitives);
982982
}
983983
[core.$toList](opts) {
984984
let growable = opts && 'growable' in opts ? opts.growable : true;
985-
return growable ? dart.setType([], core.List$(E)) : new (core.List$(E))(0);
985+
return growable ? dart.setType([], core.List$(E)) : core.List$(E).new(0);
986986
}
987987
[core.$toSet]() {
988-
return new (core.Set$(E))();
988+
return core.Set$(E).new();
989989
}
990990
}
991991
EmptyIterable[dart.implements] = () => [EfficientLength];
@@ -1205,7 +1205,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
12051205
return element;
12061206
elementIndex = dart.notNull(elementIndex) + 1;
12071207
}
1208-
throw new core.RangeError.index(index, iterable, "index", null, elementIndex);
1208+
throw core.RangeError.index(index, iterable, "index", null, elementIndex);
12091209
}
12101210
static join(iterable, separator) {
12111211
if (separator === void 0)
@@ -1241,7 +1241,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
12411241
}
12421242
static map(iterable, f) {
12431243
dart.as(f, dart.functionType(core.Object, [dart.bottom]));
1244-
return new MappedIterable(iterable, f);
1244+
return MappedIterable.new(iterable, f);
12451245
}
12461246
static mapList(list, f) {
12471247
dart.as(f, dart.functionType(core.Object, [dart.bottom]));
@@ -1276,7 +1276,7 @@ var _js_primitives = dart.lazyImport(_js_primitives);
12761276
}
12771277
static shuffleList(list, random) {
12781278
if (random == null)
1279-
random = new math.Random();
1279+
random = math.Random.new();
12801280
let length = list[core.$length];
12811281
while (dart.notNull(length) > 1) {
12821282
let pos = random.nextInt(length);
@@ -2272,10 +2272,10 @@ var _js_primitives = dart.lazyImport(_js_primitives);
22722272
let POWERS_OF_TEN = dart.const([1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, 100000000000.0, 1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000000000000000.0, 100000000000000000.0, 1000000000000000000.0, 10000000000000000000.0, 100000000000000000000.0, 1e+21, 1e+22]);
22732273
dart.defineLazyProperties(Symbol, {
22742274
get publicSymbolPattern() {
2275-
return new core.RegExp(`^(?:${Symbol.operatorRE}$|${Symbol.publicIdentifierRE}(?:=?$|[.](?!$)))+?$`);
2275+
return core.RegExp.new(`^(?:${Symbol.operatorRE}$|${Symbol.publicIdentifierRE}(?:=?$|[.](?!$)))+?$`);
22762276
},
22772277
get symbolPattern() {
2278-
return new core.RegExp(`^(?:${Symbol.operatorRE}$|${Symbol.identifierRE}(?:=?$|[.](?!$)))+?$`);
2278+
return core.RegExp.new(`^(?:${Symbol.operatorRE}$|${Symbol.identifierRE}(?:=?$|[.](?!$)))+?$`);
22792279
}
22802280
});
22812281
// Exports:

pkg/dev_compiler/lib/runtime/dart/_isolate_helper.js

+26-26
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var async = dart.import(async);
3333
class _Serializer extends core.Object {
3434
_Serializer(opts) {
3535
let serializeSendPorts = opts && 'serializeSendPorts' in opts ? opts.serializeSendPorts : true;
36-
this.serializedObjectIds = new (core.Map$(core.Object, core.int)).identity();
36+
this.serializedObjectIds = core.Map$(core.Object, core.int).identity();
3737
this[_serializeSendPorts] = dart.as(serializeSendPorts, core.bool);
3838
}
3939
serialize(x) {
@@ -190,7 +190,7 @@ var async = dart.import(async);
190190
class _Deserializer extends core.Object {
191191
_Deserializer(opts) {
192192
let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendPorts : true;
193-
this.deserializedObjects = new core.List();
193+
this.deserializedObjects = core.List.new();
194194
this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool);
195195
}
196196
deserialize(x) {
@@ -290,13 +290,13 @@ var async = dart.import(async);
290290
dart.assert(dart.equals(dart.dindex(x, 0), 'fixed'));
291291
let result = dart.as(dart.dindex(x, 1), core.List);
292292
this.deserializedObjects[core.$add](result);
293-
return new _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray)));
293+
return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray)));
294294
}
295295
deserializeExtendable(x) {
296296
dart.assert(dart.equals(dart.dindex(x, 0), 'extendable'));
297297
let result = dart.as(dart.dindex(x, 1), core.List);
298298
this.deserializedObjects[core.$add](result);
299-
return new _interceptors.JSArray.markGrowable(this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray)));
299+
return _interceptors.JSArray.markGrowable(this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray)));
300300
}
301301
deserializeMutable(x) {
302302
dart.assert(dart.equals(dart.dindex(x, 0), 'mutable'));
@@ -308,7 +308,7 @@ var async = dart.import(async);
308308
dart.assert(dart.equals(dart.dindex(x, 0), 'const'));
309309
let result = dart.as(dart.dindex(x, 1), core.List);
310310
this.deserializedObjects[core.$add](result);
311-
return new _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray)));
311+
return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray)));
312312
}
313313
deserializeMap(x) {
314314
dart.assert(dart.equals(dart.dindex(x, 0), 'map'));
@@ -484,8 +484,8 @@ var async = dart.import(async);
484484
this.managers = null;
485485
this[_nativeDetectEnvironment]();
486486
this.topEventLoop = new _EventLoop();
487-
this.isolates = new (core.Map$(core.int, _IsolateContext))();
488-
this.managers = new (core.Map$(core.int, core.Object))();
487+
this.isolates = core.Map$(core.int, _IsolateContext).new();
488+
this.managers = core.Map$(core.int, core.Object).new();
489489
if (this.isWorker) {
490490
this.mainManager = new _MainManagerStub();
491491
this[_nativeInitWorkerMessageHandler]();
@@ -547,15 +547,15 @@ var async = dart.import(async);
547547
o.nextIsolateId = dart.notNull(x) + 1;
548548
return x;
549549
})();
550-
this.ports = new (core.Map$(core.int, RawReceivePortImpl))();
551-
this.weakPorts = new (core.Set$(core.int))();
550+
this.ports = core.Map$(core.int, RawReceivePortImpl).new();
551+
this.weakPorts = core.Set$(core.int).new();
552552
this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
553553
this.controlPort = new RawReceivePortImpl._controlPort();
554-
this.pauseCapability = new isolate.Capability();
555-
this.terminateCapability = new isolate.Capability();
554+
this.pauseCapability = isolate.Capability.new();
555+
this.terminateCapability = isolate.Capability.new();
556556
this.delayedEvents = dart.setType([], core.List$(_IsolateEvent));
557-
this.pauseTokens = new (core.Set$(isolate.Capability))();
558-
this.errorPorts = new (core.Set$(isolate.SendPort))();
557+
this.pauseTokens = core.Set$(isolate.Capability).new();
558+
this.errorPorts = core.Set$(isolate.SendPort).new();
559559
this.initialized = false;
560560
this.isPaused = false;
561561
this.doneHandlers = null;
@@ -618,7 +618,7 @@ var async = dart.import(async);
618618
}
619619
dart.assert(pingType == isolate.Isolate.BEFORE_NEXT_EVENT);
620620
if (this[_scheduledControlEvents] == null) {
621-
this[_scheduledControlEvents] = new collection.Queue();
621+
this[_scheduledControlEvents] = collection.Queue.new();
622622
}
623623
dart.dsend(this[_scheduledControlEvents], 'addLast', respond);
624624
}
@@ -635,7 +635,7 @@ var async = dart.import(async);
635635
}
636636
dart.assert(priority == isolate.Isolate.BEFORE_NEXT_EVENT);
637637
if (this[_scheduledControlEvents] == null) {
638-
this[_scheduledControlEvents] = new collection.Queue();
638+
this[_scheduledControlEvents] = collection.Queue.new();
639639
}
640640
dart.dsend(this[_scheduledControlEvents], 'addLast', dart.bind(this, 'kill'));
641641
}
@@ -659,7 +659,7 @@ var async = dart.import(async);
659659
}
660660
return;
661661
}
662-
let message = new core.List(2);
662+
let message = core.List.new(2);
663663
message[core.$set](0, dart.toString(error));
664664
message[core.$set](1, stackTrace == null ? null : dart.toString(stackTrace));
665665
for (let port of this.errorPorts)
@@ -754,7 +754,7 @@ var async = dart.import(async);
754754
}
755755
[_addRegistration](portId, port) {
756756
if (this.ports.containsKey(portId)) {
757-
throw new core.Exception("Registry: ports must be registered only once.");
757+
throw core.Exception.new("Registry: ports must be registered only once.");
758758
}
759759
this.ports.set(portId, port);
760760
}
@@ -826,7 +826,7 @@ var async = dart.import(async);
826826
let _runHelper = Symbol('_runHelper');
827827
class _EventLoop extends core.Object {
828828
_EventLoop() {
829-
this.events = new (collection.Queue$(_IsolateEvent))();
829+
this.events = collection.Queue$(_IsolateEvent).new();
830830
this[_activeJsAsyncCount] = 0;
831831
}
832832
enqueue(isolate, fn, msg) {
@@ -842,7 +842,7 @@ var async = dart.import(async);
842842
}
843843
checkOpenReceivePortsFromCommandLine() {
844844
if (dart.notNull(exports._globalState.rootContext != null) && dart.notNull(exports._globalState.isolates.containsKey(exports._globalState.rootContext.id)) && dart.notNull(exports._globalState.fromCommandLine) && dart.notNull(exports._globalState.rootContext.ports.isEmpty)) {
845-
throw new core.Exception("Program exited with open ReceivePorts.");
845+
throw core.Exception.new("Program exited with open ReceivePorts.");
846846
}
847847
}
848848
runIteration() {
@@ -1068,7 +1068,7 @@ var async = dart.import(async);
10681068
IsolateNatives._consoleLog(msg);
10691069
} catch (e) {
10701070
let trace = dart.stackTrace(e);
1071-
throw new core.Exception(trace);
1071+
throw core.Exception.new(trace);
10721072
}
10731073

10741074
}
@@ -1107,8 +1107,8 @@ var async = dart.import(async);
11071107
if (uri != null && dart.notNull(uri.endsWith(".dart"))) {
11081108
uri = dart.notNull(uri) + ".js";
11091109
}
1110-
let port = new isolate.ReceivePort();
1111-
let completer = new (async.Completer$(core.List))();
1110+
let port = isolate.ReceivePort.new();
1111+
let completer = async.Completer$(core.List).new();
11121112
port.first.then(dart.fn(msg => {
11131113
if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) {
11141114
completer.complete(msg);
@@ -1127,7 +1127,7 @@ var async = dart.import(async);
11271127
}
11281128
static _startWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError) {
11291129
if (args != null)
1130-
args = new (core.List$(core.String)).from(args);
1130+
args = core.List$(core.String).from(args);
11311131
if (exports._globalState.isWorker) {
11321132
exports._globalState.mainManager.postMessage(_serializeMessage(dart.map({command: 'spawn-worker', functionName: functionName, args: args, msg: message, uri: uri, isSpawnUri: isSpawnUri, startPaused: startPaused, replyPort: replyPort})));
11331133
} else {
@@ -1140,7 +1140,7 @@ var async = dart.import(async);
11401140
}
11411141
message = _clone(message);
11421142
if (args != null)
1143-
args = new (core.List$(core.String)).from(args);
1143+
args = core.List$(core.String).from(args);
11441144
exports._globalState.topEventLoop.enqueue(new _IsolateContext(), dart.fn(() => {
11451145
let func = IsolateNatives._getJSFunctionFromName(functionName);
11461146
IsolateNatives._startIsolate(dart.as(func, core.Function), args, message, isSpawnUri, startPaused, replyPort);
@@ -1252,7 +1252,7 @@ var async = dart.import(async);
12521252
}
12531253
[_checkReplyTo](replyTo) {
12541254
if (dart.notNull(replyTo != null) && !dart.is(replyTo, _NativeJsSendPort) && !dart.is(replyTo, _WorkerSendPort)) {
1255-
throw new core.Exception("SendPort.send: Illegal replyTo port type");
1255+
throw core.Exception.new("SendPort.send: Illegal replyTo port type");
12561256
}
12571257
}
12581258
}
@@ -1405,7 +1405,7 @@ var async = dart.import(async);
14051405
this[_rawPort] = rawPort;
14061406
this[_controller] = null;
14071407
super.Stream();
1408-
this[_controller] = new async.StreamController({onCancel: dart.bind(this, 'close'), sync: true});
1408+
this[_controller] = async.StreamController.new({onCancel: dart.bind(this, 'close'), sync: true});
14091409
this[_rawPort].handler = dart.bind(this[_controller], 'add');
14101410
}
14111411
listen(onData, opts) {

0 commit comments

Comments
 (0)