firefly-compiler 0.5.68 → 0.5.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/Js.ff +3 -3
- package/core/Lock.ff +1 -1
- package/core/Path.ff +4 -3
- package/lsp/LanguageServer.ff +14 -2
- package/output/js/ff/core/Js.mjs +10 -10
- package/output/js/ff/core/Lock.mjs +2 -2
- package/output/js/ff/core/Path.mjs +14 -8
- package/package.json +1 -1
- package/vscode/package.json +1 -1
package/core/Js.ff
CHANGED
|
@@ -136,10 +136,10 @@ awaitCancellablePromise[T](body: (T => Unit, Error => Unit, (Bool => Unit) => Un
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
let jsReject = Js->{e => doReject(e?)}
|
|
140
139
|
let controller = Js.controller()
|
|
141
|
-
controller->signal->
|
|
142
|
-
|
|
140
|
+
let jsDoReject = Js->{_ => doReject(controller->signal->reason?)}
|
|
141
|
+
controller->signal->addEventListener("abort", jsDoReject)
|
|
142
|
+
cleanups.push({_ => controller->signal->removeEventListener("abort", jsDoReject)})
|
|
143
143
|
body(doResolve, doReject, {cleanup => cleanups.push(cleanup)})
|
|
144
144
|
}))?
|
|
145
145
|
}
|
package/core/Lock.ff
CHANGED
package/core/Path.ff
CHANGED
|
@@ -336,7 +336,7 @@ internalReadStream(createReadStream: () => JsValue): Stream[Buffer] {
|
|
|
336
336
|
if(jsStream->destroyed?) {None} else:
|
|
337
337
|
Js.withSignal {signal =>
|
|
338
338
|
let promise = Js->Promise->(Js->{resolve, reject =>
|
|
339
|
-
let jsDoReject = Js->{doReject(
|
|
339
|
+
let jsDoReject = Js->{_ => doReject(signal->reason?)}
|
|
340
340
|
doResolve = {
|
|
341
341
|
signal->removeEventListener("abort", jsDoReject)
|
|
342
342
|
doResolve = emptyResolve
|
|
@@ -369,9 +369,10 @@ internalWriteStream(path: Path, stream: Stream[Buffer], flags: String) {
|
|
|
369
369
|
if(!writable->write(Js->Uint8Array->(buffer!->buffer, buffer!->byteOffset, buffer!->byteLength))?) {
|
|
370
370
|
Js.withSignal {signal =>
|
|
371
371
|
Js.await(Js->Promise->(Js->{resolve, reject =>
|
|
372
|
-
|
|
372
|
+
let jsDoReject = Js->{_ => reject->callValue1(signal->reason?)}
|
|
373
|
+
signal->addEventListener("abort", jsDoReject)
|
|
373
374
|
writable->once("drain", Js->{
|
|
374
|
-
signal->removeEventListener("abort",
|
|
375
|
+
signal->removeEventListener("abort", jsDoReject)
|
|
375
376
|
resolve.callValue0()
|
|
376
377
|
})
|
|
377
378
|
}))
|
package/lsp/LanguageServer.ff
CHANGED
|
@@ -63,12 +63,13 @@ main(system: NodeSystem) {
|
|
|
63
63
|
let request = requestPair.first
|
|
64
64
|
let message = parseRequestMessage(request.object)
|
|
65
65
|
logDirectory.each {logMessage(_, "request", request.object, message.method)}
|
|
66
|
-
spawn(message.id) {
|
|
66
|
+
spawn(message.id) {task =>
|
|
67
67
|
try {
|
|
68
68
|
if(message.method == "$/cancelRequest") {
|
|
69
69
|
abort(Some(parseMessageId(message.parameters.grab("id"))))
|
|
70
70
|
}
|
|
71
71
|
handleRequestMessage(system, handler, message, version).each {body =>
|
|
72
|
+
//task.sleep(Duration(1.0))
|
|
72
73
|
responseChannel.write(Pair(body, message.method))
|
|
73
74
|
}
|
|
74
75
|
} catchAny {error =>
|
|
@@ -77,12 +78,23 @@ main(system: NodeSystem) {
|
|
|
77
78
|
Error(-32800, "Request cancelled")
|
|
78
79
|
} else {
|
|
79
80
|
Log.trace("LS ERROR " + error.name() + ": " + error.message())
|
|
81
|
+
Log.trace("BEGIN LS ERROR STACK TRACE")
|
|
80
82
|
Log.trace(error.stack())
|
|
83
|
+
Log.trace("END LS ERROR STACK TRACE")
|
|
81
84
|
Error(-32603, "Internal error")
|
|
82
85
|
}
|
|
83
86
|
message.id.each {id =>
|
|
84
87
|
let body = makeResponseMessage(id, problem)
|
|
85
|
-
|
|
88
|
+
try {
|
|
89
|
+
responseChannel.write(Pair(body, message.method))
|
|
90
|
+
} catchAny {error =>
|
|
91
|
+
if(error.name() == "AbortError") {
|
|
92
|
+
Log.trace("LS ABORT WRITE")
|
|
93
|
+
let writeProblem = Error(-32800, "Request cancelled")
|
|
94
|
+
let writeMessage = makeResponseMessage(id, problem)
|
|
95
|
+
responseChannel.write(Pair(writeMessage, message.method))
|
|
96
|
+
}
|
|
97
|
+
}
|
|
86
98
|
}
|
|
87
99
|
}
|
|
88
100
|
}
|
package/output/js/ff/core/Js.mjs
CHANGED
|
@@ -242,13 +242,13 @@ reject_(e_)
|
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
244
|
});
|
|
245
|
-
const jsReject_ = ((e_) => {
|
|
246
|
-
return doReject_(e_)
|
|
247
|
-
});
|
|
248
245
|
const controller_ = $task.controller_;
|
|
249
|
-
|
|
246
|
+
const jsDoReject_ = ((_) => {
|
|
247
|
+
return doReject_(controller_.signal.reason)
|
|
248
|
+
});
|
|
249
|
+
controller_.signal.addEventListener("abort", jsDoReject_);
|
|
250
250
|
cleanups_.array.push(((_) => {
|
|
251
|
-
controller_.signal.removeEventListener("abort",
|
|
251
|
+
controller_.signal.removeEventListener("abort", jsDoReject_)
|
|
252
252
|
}));
|
|
253
253
|
return body_(doResolve_, doReject_, ((cleanup_) => {
|
|
254
254
|
cleanups_.array.push(cleanup_)
|
|
@@ -565,13 +565,13 @@ reject_(e_)
|
|
|
565
565
|
}
|
|
566
566
|
}
|
|
567
567
|
});
|
|
568
|
-
const jsReject_ = (async (a_1) => await (async (e_, $task) => {
|
|
569
|
-
return (await doReject_(e_, $task))
|
|
570
|
-
})(a_1, $task));
|
|
571
568
|
const controller_ = $task.controller_;
|
|
572
|
-
|
|
569
|
+
const jsDoReject_ = (async (a_1) => await (async (_, $task) => {
|
|
570
|
+
return (await doReject_(controller_.signal.reason, $task))
|
|
571
|
+
})(a_1, $task));
|
|
572
|
+
controller_.signal.addEventListener("abort", jsDoReject_);
|
|
573
573
|
cleanups_.array.push((async (_, $task) => {
|
|
574
|
-
controller_.signal.removeEventListener("abort",
|
|
574
|
+
controller_.signal.removeEventListener("abort", jsDoReject_)
|
|
575
575
|
}));
|
|
576
576
|
return (await body_(doResolve_, doReject_, (async (cleanup_, $task) => {
|
|
577
577
|
cleanups_.array.push(cleanup_)
|
|
@@ -225,7 +225,7 @@ acquired_ = true
|
|
|
225
225
|
error_ = e_
|
|
226
226
|
}
|
|
227
227
|
};
|
|
228
|
-
if(ff_core_JsValue.JsValue_isUndefined(error_)) {
|
|
228
|
+
if((!ff_core_JsValue.JsValue_isUndefined(error_))) {
|
|
229
229
|
throw error_
|
|
230
230
|
}
|
|
231
231
|
}
|
|
@@ -299,7 +299,7 @@ acquired_ = true
|
|
|
299
299
|
error_ = e_
|
|
300
300
|
}
|
|
301
301
|
};
|
|
302
|
-
if(ff_core_JsValue.JsValue_isUndefined(error_)) {
|
|
302
|
+
if((!ff_core_JsValue.JsValue_isUndefined(error_))) {
|
|
303
303
|
throw error_
|
|
304
304
|
}
|
|
305
305
|
}
|
|
@@ -154,8 +154,8 @@ return ff_core_Option.None()
|
|
|
154
154
|
} else {
|
|
155
155
|
ff_core_Js.withSignal_(((signal_) => {
|
|
156
156
|
const promise_ = (new Promise(((resolve_, reject_) => {
|
|
157
|
-
const jsDoReject_ = ((
|
|
158
|
-
return doReject_(
|
|
157
|
+
const jsDoReject_ = ((_) => {
|
|
158
|
+
return doReject_(signal_.reason)
|
|
159
159
|
});
|
|
160
160
|
doResolve_ = (() => {
|
|
161
161
|
signal_.removeEventListener("abort", jsDoReject_);
|
|
@@ -204,9 +204,12 @@ ff_core_Stream.Stream_each(stream_, ((buffer_) => {
|
|
|
204
204
|
if((!writable_.write((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength))))) {
|
|
205
205
|
ff_core_Js.withSignal_(((signal_) => {
|
|
206
206
|
return (new Promise(((resolve_, reject_) => {
|
|
207
|
-
|
|
207
|
+
const jsDoReject_ = ((_) => {
|
|
208
|
+
return reject_.callValue1(signal_.reason)
|
|
209
|
+
});
|
|
210
|
+
signal_.addEventListener("abort", jsDoReject_);
|
|
208
211
|
return writable_.once("drain", (() => {
|
|
209
|
-
signal_.removeEventListener("abort",
|
|
212
|
+
signal_.removeEventListener("abort", jsDoReject_);
|
|
210
213
|
return resolve_()
|
|
211
214
|
}))
|
|
212
215
|
})))
|
|
@@ -270,8 +273,8 @@ return ff_core_Option.None()
|
|
|
270
273
|
} else {
|
|
271
274
|
(await ff_core_Js.withSignal_$((async (signal_, $task) => {
|
|
272
275
|
const promise_ = (new Promise(((resolve_, reject_) => {
|
|
273
|
-
const jsDoReject_ = ((
|
|
274
|
-
return doReject_(
|
|
276
|
+
const jsDoReject_ = ((_) => {
|
|
277
|
+
return doReject_(signal_.reason)
|
|
275
278
|
});
|
|
276
279
|
doResolve_ = (() => {
|
|
277
280
|
signal_.removeEventListener("abort", jsDoReject_);
|
|
@@ -320,9 +323,12 @@ try {
|
|
|
320
323
|
if((!writable_.write((new Uint8Array(buffer_.buffer, buffer_.byteOffset, buffer_.byteLength))))) {
|
|
321
324
|
(await ff_core_Js.withSignal_$((async (signal_, $task) => {
|
|
322
325
|
return (await (new Promise(((resolve_, reject_) => {
|
|
323
|
-
|
|
326
|
+
const jsDoReject_ = ((_) => {
|
|
327
|
+
return reject_.callValue1(signal_.reason)
|
|
328
|
+
});
|
|
329
|
+
signal_.addEventListener("abort", jsDoReject_);
|
|
324
330
|
return writable_.once("drain", (() => {
|
|
325
|
-
signal_.removeEventListener("abort",
|
|
331
|
+
signal_.removeEventListener("abort", jsDoReject_);
|
|
326
332
|
return resolve_()
|
|
327
333
|
}))
|
|
328
334
|
}))))
|
package/package.json
CHANGED