Skip to content

Commit 781d5dd

Browse files
authored
Merge pull request gopherjs#1215 from gopherjs/es6
Perform a few automated ES6 transformations to our prelude
2 parents 5e16fc8 + 4bc5c0f commit 781d5dd

File tree

5 files changed

+189
-190
lines changed

5 files changed

+189
-190
lines changed

compiler/prelude/goroutines.js

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var $stackDepthOffset = 0;
2-
var $getStackDepth = function () {
2+
var $getStackDepth = () => {
33
var err = new Error();
44
if (err.stack === undefined) {
55
return undefined;
@@ -8,7 +8,7 @@ var $getStackDepth = function () {
88
};
99

1010
var $panicStackDepth = null, $panicValue;
11-
var $callDeferred = function (deferred, jsErr, fromPanic) {
11+
var $callDeferred = (deferred, jsErr, fromPanic) => {
1212
if (!fromPanic && deferred !== null && $curGoroutine.deferStack.indexOf(deferred) == -1) {
1313
throw jsErr;
1414
}
@@ -109,31 +109,31 @@ var $callDeferred = function (deferred, jsErr, fromPanic) {
109109
}
110110
};
111111

112-
var $panic = function (value) {
112+
var $panic = value => {
113113
$curGoroutine.panicStack.push(value);
114114
$callDeferred(null, null, true);
115115
};
116-
var $recover = function () {
116+
var $recover = () => {
117117
if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) {
118118
return $ifaceNil;
119119
}
120120
$panicStackDepth = null;
121121
return $panicValue;
122122
};
123-
var $throw = function (err) { throw err; };
123+
var $throw = err => { throw err; };
124124

125125
var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] };
126126
var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true, $exportedFunctions = 0;
127127
var $mainFinished = false;
128-
var $go = function (fun, args) {
128+
var $go = (fun, args) => {
129129
$totalGoroutines++;
130130
$awakeGoroutines++;
131-
var $goroutine = function () {
131+
var $goroutine = () => {
132132
try {
133133
$curGoroutine = $goroutine;
134-
var r = fun.apply(undefined, args);
134+
var r = fun(...args);
135135
if (r && r.$blk !== undefined) {
136-
fun = function () { return r.$blk(); };
136+
fun = () => { return r.$blk(); };
137137
args = [];
138138
return;
139139
}
@@ -167,7 +167,7 @@ var $go = function (fun, args) {
167167
};
168168

169169
var $scheduled = [];
170-
var $runScheduled = function () {
170+
var $runScheduled = () => {
171171
// For nested setTimeout calls browsers enforce 4ms minimum delay. We minimize
172172
// the effect of this penalty by queueing the timer preemptively before we run
173173
// the goroutines, and later cancelling it if it turns out unneeded. See:
@@ -194,7 +194,7 @@ var $runScheduled = function () {
194194
}
195195
};
196196

197-
var $schedule = function (goroutine) {
197+
var $schedule = goroutine => {
198198
if (goroutine.asleep) {
199199
goroutine.asleep = false;
200200
$awakeGoroutines++;
@@ -205,29 +205,29 @@ var $schedule = function (goroutine) {
205205
}
206206
};
207207

208-
var $setTimeout = function (f, t) {
208+
var $setTimeout = (f, t) => {
209209
$awakeGoroutines++;
210-
return setTimeout(function () {
210+
return setTimeout(() => {
211211
$awakeGoroutines--;
212212
f();
213213
}, t);
214214
};
215215

216-
var $block = function () {
216+
var $block = () => {
217217
if ($curGoroutine === $noGoroutine) {
218218
$throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine");
219219
}
220220
$curGoroutine.asleep = true;
221221
};
222222

223-
var $restore = function (context, params) {
223+
var $restore = (context, params) => {
224224
if (context !== undefined && context.$blk !== undefined) {
225225
return context;
226226
}
227227
return params;
228228
}
229229

230-
var $send = function (chan, value) {
230+
var $send = (chan, value) => {
231231
if (chan.$closed) {
232232
$throwRuntimeError("send on closed channel");
233233
}
@@ -243,21 +243,21 @@ var $send = function (chan, value) {
243243

244244
var thisGoroutine = $curGoroutine;
245245
var closedDuringSend;
246-
chan.$sendQueue.push(function (closed) {
246+
chan.$sendQueue.push(closed => {
247247
closedDuringSend = closed;
248248
$schedule(thisGoroutine);
249249
return value;
250250
});
251251
$block();
252252
return {
253-
$blk: function () {
253+
$blk() {
254254
if (closedDuringSend) {
255255
$throwRuntimeError("send on closed channel");
256256
}
257257
}
258258
};
259259
};
260-
var $recv = function (chan) {
260+
var $recv = chan => {
261261
var queuedSend = chan.$sendQueue.shift();
262262
if (queuedSend !== undefined) {
263263
chan.$buffer.push(queuedSend(false));
@@ -271,16 +271,16 @@ var $recv = function (chan) {
271271
}
272272

273273
var thisGoroutine = $curGoroutine;
274-
var f = { $blk: function () { return this.value; } };
275-
var queueEntry = function (v) {
274+
var f = { $blk() { return this.value; } };
275+
var queueEntry = v => {
276276
f.value = v;
277277
$schedule(thisGoroutine);
278278
};
279279
chan.$recvQueue.push(queueEntry);
280280
$block();
281281
return f;
282282
};
283-
var $close = function (chan) {
283+
var $close = chan => {
284284
if (chan.$closed) {
285285
$throwRuntimeError("close of closed channel");
286286
}
@@ -300,7 +300,7 @@ var $close = function (chan) {
300300
queuedRecv([chan.$elem.zero(), false]);
301301
}
302302
};
303-
var $select = function (comms) {
303+
var $select = comms => {
304304
var ready = [];
305305
var selection = -1;
306306
for (var i = 0; i < comms.length; i++) {
@@ -344,8 +344,8 @@ var $select = function (comms) {
344344

345345
var entries = [];
346346
var thisGoroutine = $curGoroutine;
347-
var f = { $blk: function () { return this.selection; } };
348-
var removeFromQueues = function () {
347+
var f = { $blk() { return this.selection; } };
348+
var removeFromQueues = () => {
349349
for (var i = 0; i < entries.length; i++) {
350350
var entry = entries[i];
351351
var queue = entry[0];
@@ -356,11 +356,11 @@ var $select = function (comms) {
356356
}
357357
};
358358
for (var i = 0; i < comms.length; i++) {
359-
(function (i) {
359+
(i => {
360360
var comm = comms[i];
361361
switch (comm.length) {
362362
case 1: /* recv */
363-
var queueEntry = function (value) {
363+
var queueEntry = value => {
364364
f.selection = [i, value];
365365
removeFromQueues();
366366
$schedule(thisGoroutine);
@@ -369,7 +369,7 @@ var $select = function (comms) {
369369
comm[0].$recvQueue.push(queueEntry);
370370
break;
371371
case 2: /* send */
372-
var queueEntry = function () {
372+
var queueEntry = () => {
373373
if (comm[0].$closed) {
374374
$throwRuntimeError("send on closed channel");
375375
}

compiler/prelude/jsmapping.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var $jsObjectPtr, $jsErrorPtr;
22

3-
var $needsExternalization = function (t) {
3+
var $needsExternalization = t => {
44
switch (t.kind) {
55
case $kindBool:
66
case $kindInt:
@@ -20,7 +20,7 @@ var $needsExternalization = function (t) {
2020
}
2121
};
2222

23-
var $externalize = function (v, t, makeWrapper) {
23+
var $externalize = (v, t, makeWrapper) => {
2424
if (t === $jsObjectPtr) {
2525
return v;
2626
}
@@ -43,7 +43,7 @@ var $externalize = function (v, t, makeWrapper) {
4343
return $flatten64(v);
4444
case $kindArray:
4545
if ($needsExternalization(t.elem)) {
46-
return $mapArray(v, function (e) { return $externalize(e, t.elem, makeWrapper); });
46+
return $mapArray(v, e => { return $externalize(e, t.elem, makeWrapper); });
4747
}
4848
return v;
4949
case $kindFunc:
@@ -77,7 +77,7 @@ var $externalize = function (v, t, makeWrapper) {
7777
return null;
7878
}
7979
if ($needsExternalization(t.elem)) {
80-
return $mapArray($sliceToNativeArray(v), function (e) { return $externalize(e, t.elem, makeWrapper); });
80+
return $mapArray($sliceToNativeArray(v), e => { return $externalize(e, t.elem, makeWrapper); });
8181
}
8282
return $sliceToNativeArray(v);
8383
case $kindString:
@@ -105,7 +105,7 @@ var $externalize = function (v, t, makeWrapper) {
105105
}
106106

107107
var noJsObject = {};
108-
var searchJsObject = function (v, t) {
108+
var searchJsObject = (v, t) => {
109109
if (t === $jsObjectPtr) {
110110
return v;
111111
}
@@ -149,7 +149,7 @@ var $externalize = function (v, t, makeWrapper) {
149149
$throwRuntimeError("cannot externalize " + t.string);
150150
};
151151

152-
var $externalizeFunction = function (v, t, passThis, makeWrapper) {
152+
var $externalizeFunction = (v, t, passThis, makeWrapper) => {
153153
if (v === $throwNilPointerError) {
154154
return null;
155155
}
@@ -185,7 +185,7 @@ var $externalizeFunction = function (v, t, passThis, makeWrapper) {
185185
return v.$externalizeWrapper;
186186
};
187187

188-
var $internalize = function (v, t, recv, seen, makeWrapper) {
188+
var $internalize = (v, t, recv, seen, makeWrapper) => {
189189
if (t === $jsObjectPtr) {
190190
return v;
191191
}
@@ -239,7 +239,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
239239
if (v.length !== t.len) {
240240
$throwRuntimeError("got array with wrong size from JavaScript native");
241241
}
242-
return $mapArray(v, function (e) { return $internalize(e, t.elem, makeWrapper); });
242+
return $mapArray(v, e => { return $internalize(e, t.elem, makeWrapper); });
243243
case $kindFunc:
244244
return function () {
245245
var args = [];
@@ -303,7 +303,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
303303
return new $jsObjectPtr(v);
304304
}
305305
return new timePkg.Time($internalize(v, timePkg.Time, makeWrapper));
306-
case (function () { }).constructor: // is usually Function, but in Chrome extensions it is something else
306+
case ((() => { })).constructor: // is usually Function, but in Chrome extensions it is something else
307307
var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true);
308308
return new funcType($internalize(v, funcType, makeWrapper));
309309
case Number:
@@ -323,15 +323,15 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
323323
var keys = $keys(v);
324324
for (var i = 0; i < keys.length; i++) {
325325
var k = $internalize(keys[i], t.key, recv, seen, makeWrapper);
326-
m.set(t.key.keyFor(k), { k: k, v: $internalize(v[keys[i]], t.elem, recv, seen, makeWrapper) });
326+
m.set(t.key.keyFor(k), { k, v: $internalize(v[keys[i]], t.elem, recv, seen, makeWrapper) });
327327
}
328328
return m;
329329
case $kindPtr:
330330
if (t.elem.kind === $kindStruct) {
331331
return $internalize(v, t.elem, makeWrapper);
332332
}
333333
case $kindSlice:
334-
return new t($mapArray(v, function (e) { return $internalize(e, t.elem, makeWrapper); }));
334+
return new t($mapArray(v, e => { return $internalize(e, t.elem, makeWrapper); }));
335335
case $kindString:
336336
v = String(v);
337337
if ($isASCII(v)) {
@@ -354,7 +354,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
354354
return s;
355355
case $kindStruct:
356356
var noJsObject = {};
357-
var searchJsObject = function (t) {
357+
var searchJsObject = t => {
358358
if (t === $jsObjectPtr) {
359359
return v;
360360
}
@@ -388,7 +388,7 @@ var $internalize = function (v, t, recv, seen, makeWrapper) {
388388
$throwRuntimeError("cannot internalize " + t.string);
389389
};
390390

391-
var $copyIfRequired = function (v, typ) {
391+
var $copyIfRequired = (v, typ) => {
392392
// interface values
393393
if (v && v.constructor && v.constructor.copy) {
394394
return new v.constructor($clone(v.$val, v.constructor))
@@ -403,7 +403,7 @@ var $copyIfRequired = function (v, typ) {
403403
}
404404

405405
/* $isASCII reports whether string s contains only ASCII characters. */
406-
var $isASCII = function (s) {
406+
var $isASCII = s => {
407407
for (var i = 0; i < s.length; i++) {
408408
if (s.charCodeAt(i) >= 128) {
409409
return false;

0 commit comments

Comments
 (0)