firefly-compiler 0.4.6 → 0.4.8
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/compiler/Compiler.ff +2 -0
- package/compiler/Deriver.ff +7 -0
- package/core/Array.ff +17 -4
- package/core/AssetSystem.ff +1 -1
- package/core/BrowserSystem.ff +27 -0
- package/core/List.ff +4 -0
- package/core/Lock.ff +2 -2
- package/core/Random.ff +148 -0
- package/core/SourceLocation.ff +27 -0
- package/core/Task.ff +3 -0
- package/core/WebSocket.ff +127 -0
- package/httpserver/HttpServer.ff +1 -1
- package/lux/Css.ff +648 -0
- package/lux/CssTest.ff +48 -0
- package/lux/Lux.ff +33 -18
- package/lux/Main.ff +4 -1
- package/output/js/ff/compiler/Builder.mjs +448 -444
- package/output/js/ff/compiler/Compiler.mjs +420 -416
- package/output/js/ff/compiler/Dependencies.mjs +393 -389
- package/output/js/ff/compiler/Deriver.mjs +1178 -1170
- package/output/js/ff/compiler/Dictionaries.mjs +1315 -1309
- package/output/js/ff/compiler/Environment.mjs +1025 -1015
- package/output/js/ff/compiler/Inference.mjs +4272 -4268
- package/output/js/ff/compiler/JsEmitter.mjs +5405 -5391
- package/output/js/ff/compiler/JsImporter.mjs +270 -266
- package/output/js/ff/compiler/LspHook.mjs +799 -793
- package/output/js/ff/compiler/Main.mjs +1691 -1675
- package/output/js/ff/compiler/Parser.mjs +4016 -4008
- package/output/js/ff/compiler/Patterns.mjs +935 -927
- package/output/js/ff/compiler/Resolver.mjs +2311 -2307
- package/output/js/ff/compiler/Substitution.mjs +1154 -1150
- package/output/js/ff/compiler/Syntax.mjs +12566 -12434
- package/output/js/ff/compiler/Token.mjs +3152 -3096
- package/output/js/ff/compiler/Tokenizer.mjs +597 -593
- package/output/js/ff/compiler/Unification.mjs +1762 -1752
- package/output/js/ff/compiler/Wildcards.mjs +612 -608
- package/output/js/ff/compiler/Workspace.mjs +695 -687
- package/output/js/ff/core/Any.mjs +147 -143
- package/output/js/ff/core/Array.mjs +573 -547
- package/output/js/ff/core/AssetSystem.mjs +278 -274
- package/output/js/ff/core/Atomic.mjs +158 -154
- package/output/js/ff/core/Bool.mjs +156 -152
- package/output/js/ff/core/Box.mjs +116 -112
- package/output/js/ff/core/BrowserSystem.mjs +181 -126
- package/output/js/ff/core/Buffer.mjs +399 -395
- package/output/js/ff/core/BuildSystem.mjs +300 -296
- package/output/js/ff/core/Channel.mjs +193 -189
- package/output/js/ff/core/Char.mjs +153 -149
- package/output/js/ff/core/Core.mjs +304 -300
- package/output/js/ff/core/Duration.mjs +120 -116
- package/output/js/ff/core/Equal.mjs +183 -179
- package/output/js/ff/core/Error.mjs +146 -142
- package/output/js/ff/core/FileHandle.mjs +154 -150
- package/output/js/ff/core/Float.mjs +229 -225
- package/output/js/ff/core/HttpClient.mjs +195 -191
- package/output/js/ff/core/Instant.mjs +113 -109
- package/output/js/ff/core/Int.mjs +269 -265
- package/output/js/ff/core/IntMap.mjs +284 -280
- package/output/js/ff/core/JsSystem.mjs +242 -238
- package/output/js/ff/core/JsValue.mjs +712 -708
- package/output/js/ff/core/List.mjs +2346 -2334
- package/output/js/ff/core/Lock.mjs +235 -231
- package/output/js/ff/core/Log.mjs +167 -163
- package/output/js/ff/core/Map.mjs +366 -362
- package/output/js/ff/core/NodeSystem.mjs +298 -294
- package/output/js/ff/core/Nothing.mjs +108 -104
- package/output/js/ff/core/Option.mjs +1023 -1015
- package/output/js/ff/core/Ordering.mjs +734 -730
- package/output/js/ff/core/Pair.mjs +337 -331
- package/output/js/ff/core/Path.mjs +549 -545
- package/output/js/ff/core/Random.mjs +340 -0
- package/output/js/ff/core/RbMap.mjs +1944 -1940
- package/output/js/ff/core/Serializable.mjs +432 -428
- package/output/js/ff/core/Set.mjs +258 -254
- package/output/js/ff/core/Show.mjs +209 -205
- package/output/js/ff/core/SourceLocation.mjs +273 -229
- package/output/js/ff/core/Stack.mjs +533 -529
- package/output/js/ff/core/Stream.mjs +1308 -1304
- package/output/js/ff/core/String.mjs +369 -365
- package/output/js/ff/core/StringMap.mjs +284 -280
- package/output/js/ff/core/Task.mjs +325 -319
- package/output/js/ff/core/Try.mjs +511 -507
- package/output/js/ff/core/Unit.mjs +155 -151
- package/output/js/ff/core/WebSocket.mjs +198 -0
- package/package.json +1 -1
- package/vscode/package.json +1 -1
- package/webserver/.firefly/include/package-lock.json +16 -0
- package/webserver/.firefly/include/package.json +5 -0
- package/webserver/.firefly/package.ff +2 -0
- package/webserver/WebServer.ff +608 -0
|
@@ -1,133 +1,137 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import * as ff_core_Any from "../../ff/core/Any.mjs"
|
|
4
|
-
|
|
5
|
-
import * as ff_core_Array from "../../ff/core/Array.mjs"
|
|
6
|
-
|
|
7
|
-
import * as ff_core_AssetSystem from "../../ff/core/AssetSystem.mjs"
|
|
8
|
-
|
|
9
|
-
import * as ff_core_Atomic from "../../ff/core/Atomic.mjs"
|
|
10
|
-
|
|
11
|
-
import * as ff_core_Bool from "../../ff/core/Bool.mjs"
|
|
12
|
-
|
|
13
|
-
import * as ff_core_Box from "../../ff/core/Box.mjs"
|
|
14
|
-
|
|
15
|
-
import * as ff_core_BrowserSystem from "../../ff/core/BrowserSystem.mjs"
|
|
16
|
-
|
|
17
|
-
import * as ff_core_Buffer from "../../ff/core/Buffer.mjs"
|
|
18
|
-
|
|
19
|
-
import * as ff_core_BuildSystem from "../../ff/core/BuildSystem.mjs"
|
|
20
|
-
|
|
21
|
-
import * as ff_core_Channel from "../../ff/core/Channel.mjs"
|
|
22
|
-
|
|
23
|
-
import * as ff_core_Char from "../../ff/core/Char.mjs"
|
|
24
|
-
|
|
25
|
-
import * as ff_core_Core from "../../ff/core/Core.mjs"
|
|
26
|
-
|
|
27
|
-
import * as ff_core_Duration from "../../ff/core/Duration.mjs"
|
|
28
|
-
|
|
29
|
-
import * as ff_core_Equal from "../../ff/core/Equal.mjs"
|
|
30
|
-
|
|
31
|
-
import * as ff_core_Error from "../../ff/core/Error.mjs"
|
|
32
|
-
|
|
33
|
-
import * as ff_core_FileHandle from "../../ff/core/FileHandle.mjs"
|
|
34
|
-
|
|
35
|
-
import * as ff_core_Float from "../../ff/core/Float.mjs"
|
|
36
|
-
|
|
37
|
-
import * as ff_core_HttpClient from "../../ff/core/HttpClient.mjs"
|
|
38
|
-
|
|
39
|
-
import * as ff_core_Instant from "../../ff/core/Instant.mjs"
|
|
40
|
-
|
|
41
|
-
import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
42
|
-
|
|
43
|
-
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
44
|
-
|
|
45
|
-
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
46
|
-
|
|
47
|
-
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
48
|
-
|
|
49
|
-
import * as ff_core_List from "../../ff/core/List.mjs"
|
|
50
|
-
|
|
51
|
-
import * as ff_core_Lock from "../../ff/core/Lock.mjs"
|
|
52
|
-
|
|
53
|
-
import * as ff_core_Log from "../../ff/core/Log.mjs"
|
|
54
|
-
|
|
55
|
-
import * as ff_core_Map from "../../ff/core/Map.mjs"
|
|
56
|
-
|
|
57
|
-
import * as ff_core_NodeSystem from "../../ff/core/NodeSystem.mjs"
|
|
58
|
-
|
|
59
|
-
import * as ff_core_Nothing from "../../ff/core/Nothing.mjs"
|
|
60
|
-
|
|
61
|
-
import * as ff_core_Option from "../../ff/core/Option.mjs"
|
|
62
|
-
|
|
63
|
-
import * as ff_core_Ordering from "../../ff/core/Ordering.mjs"
|
|
64
|
-
|
|
65
|
-
import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
66
|
-
|
|
67
|
-
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
68
|
-
|
|
69
|
-
import * as
|
|
70
|
-
|
|
71
|
-
import * as
|
|
72
|
-
|
|
73
|
-
import * as
|
|
74
|
-
|
|
75
|
-
import * as
|
|
76
|
-
|
|
77
|
-
import * as
|
|
78
|
-
|
|
79
|
-
import * as
|
|
80
|
-
|
|
81
|
-
import * as
|
|
82
|
-
|
|
83
|
-
import * as
|
|
84
|
-
|
|
85
|
-
import * as
|
|
86
|
-
|
|
87
|
-
import * as
|
|
88
|
-
|
|
89
|
-
import * as
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
export function
|
|
108
|
-
throw new Error('Function
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function
|
|
112
|
-
throw new Error('Function
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export function
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
ff_core_Lock.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import * as ff_core_Any from "../../ff/core/Any.mjs"
|
|
4
|
+
|
|
5
|
+
import * as ff_core_Array from "../../ff/core/Array.mjs"
|
|
6
|
+
|
|
7
|
+
import * as ff_core_AssetSystem from "../../ff/core/AssetSystem.mjs"
|
|
8
|
+
|
|
9
|
+
import * as ff_core_Atomic from "../../ff/core/Atomic.mjs"
|
|
10
|
+
|
|
11
|
+
import * as ff_core_Bool from "../../ff/core/Bool.mjs"
|
|
12
|
+
|
|
13
|
+
import * as ff_core_Box from "../../ff/core/Box.mjs"
|
|
14
|
+
|
|
15
|
+
import * as ff_core_BrowserSystem from "../../ff/core/BrowserSystem.mjs"
|
|
16
|
+
|
|
17
|
+
import * as ff_core_Buffer from "../../ff/core/Buffer.mjs"
|
|
18
|
+
|
|
19
|
+
import * as ff_core_BuildSystem from "../../ff/core/BuildSystem.mjs"
|
|
20
|
+
|
|
21
|
+
import * as ff_core_Channel from "../../ff/core/Channel.mjs"
|
|
22
|
+
|
|
23
|
+
import * as ff_core_Char from "../../ff/core/Char.mjs"
|
|
24
|
+
|
|
25
|
+
import * as ff_core_Core from "../../ff/core/Core.mjs"
|
|
26
|
+
|
|
27
|
+
import * as ff_core_Duration from "../../ff/core/Duration.mjs"
|
|
28
|
+
|
|
29
|
+
import * as ff_core_Equal from "../../ff/core/Equal.mjs"
|
|
30
|
+
|
|
31
|
+
import * as ff_core_Error from "../../ff/core/Error.mjs"
|
|
32
|
+
|
|
33
|
+
import * as ff_core_FileHandle from "../../ff/core/FileHandle.mjs"
|
|
34
|
+
|
|
35
|
+
import * as ff_core_Float from "../../ff/core/Float.mjs"
|
|
36
|
+
|
|
37
|
+
import * as ff_core_HttpClient from "../../ff/core/HttpClient.mjs"
|
|
38
|
+
|
|
39
|
+
import * as ff_core_Instant from "../../ff/core/Instant.mjs"
|
|
40
|
+
|
|
41
|
+
import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
42
|
+
|
|
43
|
+
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
44
|
+
|
|
45
|
+
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
46
|
+
|
|
47
|
+
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
48
|
+
|
|
49
|
+
import * as ff_core_List from "../../ff/core/List.mjs"
|
|
50
|
+
|
|
51
|
+
import * as ff_core_Lock from "../../ff/core/Lock.mjs"
|
|
52
|
+
|
|
53
|
+
import * as ff_core_Log from "../../ff/core/Log.mjs"
|
|
54
|
+
|
|
55
|
+
import * as ff_core_Map from "../../ff/core/Map.mjs"
|
|
56
|
+
|
|
57
|
+
import * as ff_core_NodeSystem from "../../ff/core/NodeSystem.mjs"
|
|
58
|
+
|
|
59
|
+
import * as ff_core_Nothing from "../../ff/core/Nothing.mjs"
|
|
60
|
+
|
|
61
|
+
import * as ff_core_Option from "../../ff/core/Option.mjs"
|
|
62
|
+
|
|
63
|
+
import * as ff_core_Ordering from "../../ff/core/Ordering.mjs"
|
|
64
|
+
|
|
65
|
+
import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
66
|
+
|
|
67
|
+
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
68
|
+
|
|
69
|
+
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
70
|
+
|
|
71
|
+
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
72
|
+
|
|
73
|
+
import * as ff_core_Set from "../../ff/core/Set.mjs"
|
|
74
|
+
|
|
75
|
+
import * as ff_core_Show from "../../ff/core/Show.mjs"
|
|
76
|
+
|
|
77
|
+
import * as ff_core_SourceLocation from "../../ff/core/SourceLocation.mjs"
|
|
78
|
+
|
|
79
|
+
import * as ff_core_Stack from "../../ff/core/Stack.mjs"
|
|
80
|
+
|
|
81
|
+
import * as ff_core_Stream from "../../ff/core/Stream.mjs"
|
|
82
|
+
|
|
83
|
+
import * as ff_core_String from "../../ff/core/String.mjs"
|
|
84
|
+
|
|
85
|
+
import * as ff_core_StringMap from "../../ff/core/StringMap.mjs"
|
|
86
|
+
|
|
87
|
+
import * as ff_core_Task from "../../ff/core/Task.mjs"
|
|
88
|
+
|
|
89
|
+
import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
90
|
+
|
|
91
|
+
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
92
|
+
|
|
93
|
+
import * as ff_core_WebSocket from "../../ff/core/WebSocket.mjs"
|
|
94
|
+
|
|
95
|
+
// type Lock
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
// type LockCondition
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
export function Lock_condition(self_) {
|
|
108
|
+
throw new Error('Function Lock_condition is missing on this target in sync context.');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function Lock_acquire(self_, reentrant_) {
|
|
112
|
+
throw new Error('Function Lock_acquire is missing on this target in sync context.');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function Lock_release(self_) {
|
|
116
|
+
throw new Error('Function Lock_release is missing on this target in sync context.');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function Lock_do(self_, reentrant_, body_) {
|
|
120
|
+
ff_core_Lock.Lock_acquire(self_, reentrant_);
|
|
121
|
+
try {
|
|
122
|
+
return body_()
|
|
123
|
+
} finally {
|
|
124
|
+
ff_core_Lock.Lock_release(self_)
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export async function Lock_condition$(self_, $task) {
|
|
125
129
|
|
|
126
130
|
return {lock: self_, stack: [], queue: []}
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
export async function Lock_acquire$(self_, reentrant_, $task) {
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export async function Lock_acquire$(self_, reentrant_, $task) {
|
|
131
135
|
|
|
132
136
|
if(self_.level === 0) {
|
|
133
137
|
self_.owner = $task
|
|
@@ -150,10 +154,10 @@ export async function Lock_acquire$(self_, reentrant_, $task) {
|
|
|
150
154
|
self_.level += 1
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export async function Lock_release$(self_, $task) {
|
|
157
|
+
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export async function Lock_release$(self_, $task) {
|
|
157
161
|
|
|
158
162
|
if(self_.owner !== $task) {
|
|
159
163
|
throw new Error("Tried to release a lock without acquiring it first.")
|
|
@@ -174,67 +178,67 @@ export async function Lock_release$(self_, $task) {
|
|
|
174
178
|
pending.resolve()
|
|
175
179
|
}
|
|
176
180
|
}
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
export async function Lock_do$(self_, reentrant_, body_, $task) {
|
|
181
|
-
(await ff_core_Lock.Lock_acquire$(self_, reentrant_, $task));
|
|
182
|
-
try {
|
|
183
|
-
return (await body_($task))
|
|
184
|
-
} finally {
|
|
185
|
-
(await ff_core_Lock.Lock_release$(self_, $task))
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export function LockCondition_sleep(self_) {
|
|
190
|
-
throw new Error('Function LockCondition_sleep is missing on this target in sync context.');
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export function LockCondition_sleepUntil(self_, body_) {
|
|
194
|
-
_tailcall: for(;;) {
|
|
195
|
-
{
|
|
196
|
-
const _1 = body_();
|
|
197
|
-
{
|
|
198
|
-
if(_1.Some) {
|
|
199
|
-
const value_ = _1.value_;
|
|
200
|
-
return value_
|
|
201
|
-
return
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
{
|
|
205
|
-
if(_1.None) {
|
|
206
|
-
ff_core_Lock.LockCondition_sleep(self_);
|
|
207
|
-
{
|
|
208
|
-
const self_r_ = self_;
|
|
209
|
-
const body_r_ = body_;
|
|
210
|
-
self_ = self_r_
|
|
211
|
-
body_ = body_r_
|
|
212
|
-
continue _tailcall
|
|
213
|
-
}
|
|
214
|
-
return
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
export function LockCondition_wakeOne(self_) {
|
|
223
|
-
throw new Error('Function LockCondition_wakeOne is missing on this target in sync context.');
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
export function LockCondition_wakeAll(self_) {
|
|
227
|
-
throw new Error('Function LockCondition_wakeAll is missing on this target in sync context.');
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
export async function LockCondition_sleep$(self_, $task) {
|
|
181
|
+
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export async function Lock_do$(self_, reentrant_, body_, $task) {
|
|
185
|
+
(await ff_core_Lock.Lock_acquire$(self_, reentrant_, $task));
|
|
186
|
+
try {
|
|
187
|
+
return (await body_($task))
|
|
188
|
+
} finally {
|
|
189
|
+
(await ff_core_Lock.Lock_release$(self_, $task))
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export function LockCondition_sleep(self_) {
|
|
194
|
+
throw new Error('Function LockCondition_sleep is missing on this target in sync context.');
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export function LockCondition_sleepUntil(self_, body_) {
|
|
198
|
+
_tailcall: for(;;) {
|
|
199
|
+
{
|
|
200
|
+
const _1 = body_();
|
|
201
|
+
{
|
|
202
|
+
if(_1.Some) {
|
|
203
|
+
const value_ = _1.value_;
|
|
204
|
+
return value_
|
|
205
|
+
return
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
{
|
|
209
|
+
if(_1.None) {
|
|
210
|
+
ff_core_Lock.LockCondition_sleep(self_);
|
|
211
|
+
{
|
|
212
|
+
const self_r_ = self_;
|
|
213
|
+
const body_r_ = body_;
|
|
214
|
+
self_ = self_r_
|
|
215
|
+
body_ = body_r_
|
|
216
|
+
continue _tailcall
|
|
217
|
+
}
|
|
218
|
+
return
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export function LockCondition_wakeOne(self_) {
|
|
227
|
+
throw new Error('Function LockCondition_wakeOne is missing on this target in sync context.');
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export function LockCondition_wakeAll(self_) {
|
|
231
|
+
throw new Error('Function LockCondition_wakeAll is missing on this target in sync context.');
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export async function LockCondition_sleep$(self_, $task) {
|
|
231
235
|
|
|
232
236
|
if(self_.lock.owner !== $task) {
|
|
233
237
|
throw new Error("Tried to sleep on a condition without acquiring it first.")
|
|
234
238
|
}
|
|
235
239
|
const level = self_.lock.level
|
|
236
240
|
self_.lock.level = 1
|
|
237
|
-
await
|
|
241
|
+
await ff_core_Lock.Lock_release$(self_.lock)
|
|
238
242
|
try {
|
|
239
243
|
await new Promise((resolve, reject) => {
|
|
240
244
|
$task.controller.signal.addEventListener('abort', reject)
|
|
@@ -250,7 +254,7 @@ export async function LockCondition_sleep$(self_, $task) {
|
|
|
250
254
|
let acquired = false
|
|
251
255
|
while(!acquired) {
|
|
252
256
|
try {
|
|
253
|
-
await
|
|
257
|
+
await ff_core_Lock.Lock_acquire$(self_.lock)
|
|
254
258
|
self_.lock.level = level
|
|
255
259
|
acquired = true
|
|
256
260
|
} catch(e) {
|
|
@@ -259,39 +263,39 @@ export async function LockCondition_sleep$(self_, $task) {
|
|
|
259
263
|
}
|
|
260
264
|
if(e !== null) throw e;
|
|
261
265
|
}
|
|
262
|
-
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
export async function LockCondition_sleepUntil$(self_, body_, $task) {
|
|
266
|
-
_tailcall: for(;;) {
|
|
267
|
-
{
|
|
268
|
-
const _1 = (await body_($task));
|
|
269
|
-
{
|
|
270
|
-
if(_1.Some) {
|
|
271
|
-
const value_ = _1.value_;
|
|
272
|
-
return value_
|
|
273
|
-
return
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
{
|
|
277
|
-
if(_1.None) {
|
|
278
|
-
(await ff_core_Lock.LockCondition_sleep$(self_, $task));
|
|
279
|
-
{
|
|
280
|
-
const self_r_ = self_;
|
|
281
|
-
const body_r_ = body_;
|
|
282
|
-
self_ = self_r_
|
|
283
|
-
body_ = body_r_
|
|
284
|
-
continue _tailcall
|
|
285
|
-
}
|
|
286
|
-
return
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
export async function LockCondition_wakeOne$(self_, $task) {
|
|
266
|
+
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export async function LockCondition_sleepUntil$(self_, body_, $task) {
|
|
270
|
+
_tailcall: for(;;) {
|
|
271
|
+
{
|
|
272
|
+
const _1 = (await body_($task));
|
|
273
|
+
{
|
|
274
|
+
if(_1.Some) {
|
|
275
|
+
const value_ = _1.value_;
|
|
276
|
+
return value_
|
|
277
|
+
return
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
{
|
|
281
|
+
if(_1.None) {
|
|
282
|
+
(await ff_core_Lock.LockCondition_sleep$(self_, $task));
|
|
283
|
+
{
|
|
284
|
+
const self_r_ = self_;
|
|
285
|
+
const body_r_ = body_;
|
|
286
|
+
self_ = self_r_
|
|
287
|
+
body_ = body_r_
|
|
288
|
+
continue _tailcall
|
|
289
|
+
}
|
|
290
|
+
return
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export async function LockCondition_wakeOne$(self_, $task) {
|
|
295
299
|
|
|
296
300
|
if(self_.stack.length === 0) {
|
|
297
301
|
const empty = self_.stack
|
|
@@ -302,10 +306,10 @@ export async function LockCondition_wakeOne$(self_, $task) {
|
|
|
302
306
|
const resolve = self_.stack.pop()
|
|
303
307
|
resolve()
|
|
304
308
|
}
|
|
305
|
-
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
export async function LockCondition_wakeAll$(self_, $task) {
|
|
309
|
+
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export async function LockCondition_wakeAll$(self_, $task) {
|
|
309
313
|
|
|
310
314
|
while(self_.stack.length !== 0) {
|
|
311
315
|
const resolve = self_.stack.pop()
|
|
@@ -318,9 +322,9 @@ export async function LockCondition_wakeAll$(self_, $task) {
|
|
|
318
322
|
const resolve = self_.stack.pop()
|
|
319
323
|
resolve()
|
|
320
324
|
}
|
|
321
|
-
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
325
|
+
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|