firefly-compiler 0.5.35 → 0.5.37
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/.hintrc +4 -4
- package/.vscode/settings.json +4 -4
- package/bin/Release.ff +157 -154
- package/bin/firefly.mjs +1 -1
- package/compiler/Builder.ff +275 -277
- package/compiler/Compiler.ff +234 -233
- package/compiler/Dependencies.ff +186 -187
- package/compiler/DependencyLock.ff +17 -17
- package/compiler/Deriver.ff +23 -31
- package/compiler/Dictionaries.ff +1 -1
- package/compiler/Inference.ff +43 -20
- package/compiler/JsEmitter.ff +1437 -1282
- package/compiler/LspHook.ff +202 -202
- package/compiler/Main.ff +25 -24
- package/compiler/ModuleCache.ff +178 -178
- package/compiler/Parser.ff +36 -109
- package/compiler/Resolver.ff +5 -8
- package/compiler/Substitution.ff +1 -1
- package/compiler/Syntax.ff +1 -16
- package/compiler/Token.ff +9 -0
- package/compiler/Tokenizer.ff +4 -0
- package/compiler/Workspace.ff +88 -88
- package/core/.firefly/include/package.json +5 -5
- package/core/.firefly/package.ff +2 -2
- package/core/Any.ff +26 -30
- package/core/Array.ff +298 -265
- package/core/Atomic.ff +63 -64
- package/core/Box.ff +7 -7
- package/core/BrowserSystem.ff +40 -40
- package/core/Buffer.ff +185 -152
- package/core/BuildSystem.ff +156 -148
- package/core/Channel.ff +95 -92
- package/core/Char.ff +3 -2
- package/core/Core.ff +16 -23
- package/core/Crypto.ff +94 -96
- package/core/Equal.ff +41 -36
- package/core/Error.ff +15 -10
- package/core/FileHandle.ff +45 -37
- package/core/Float.ff +176 -200
- package/core/HttpClient.ff +142 -148
- package/core/Instant.ff +6 -8
- package/core/Int.ff +40 -24
- package/core/IntMap.ff +61 -39
- package/core/Js.ff +305 -0
- package/core/JsSystem.ff +135 -114
- package/core/JsValue.ff +303 -159
- package/core/Json.ff +423 -443
- package/core/List.ff +482 -486
- package/core/Lock.ff +108 -144
- package/core/Log.ff +25 -14
- package/core/NodeSystem.ff +198 -191
- package/core/Ordering.ff +160 -161
- package/core/Path.ff +377 -409
- package/core/Queue.ff +90 -0
- package/core/Random.ff +140 -134
- package/core/RbMap.ff +216 -216
- package/core/Serializable.ff +16 -13
- package/core/Show.ff +44 -43
- package/core/SourceLocation.ff +68 -68
- package/core/Stream.ff +1 -1
- package/core/String.ff +224 -202
- package/core/StringMap.ff +58 -36
- package/core/Task.ff +165 -149
- package/experimental/benchmarks/ListGrab.ff +23 -23
- package/experimental/benchmarks/ListGrab.java +55 -55
- package/experimental/benchmarks/Pyrotek45.ff +30 -30
- package/experimental/benchmarks/Pyrotek45.java +64 -64
- package/experimental/bidirectional/Bidi.ff +88 -88
- package/experimental/lines/Main.ff +40 -0
- package/experimental/random/Index.ff +53 -53
- package/experimental/random/Process.ff +120 -120
- package/experimental/random/RunLength.ff +65 -65
- package/experimental/random/Scrape.ff +51 -51
- package/experimental/random/Symbols.ff +73 -73
- package/experimental/random/Tensor.ff +52 -52
- package/experimental/random/Units.ff +36 -36
- package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
- package/experimental/s3/S3TestPut.ff +16 -16
- package/experimental/tests/TestJson.ff +26 -26
- package/firefly.sh +0 -0
- package/fireflysite/.firefly/package.ff +4 -4
- package/fireflysite/CommunityOverview.ff +20 -20
- package/fireflysite/CountingButtonDemo.ff +58 -58
- package/fireflysite/DocumentParser.ff +325 -331
- package/fireflysite/ExamplesOverview.ff +40 -40
- package/fireflysite/FrontPage.ff +344 -344
- package/fireflysite/GettingStarted.ff +45 -45
- package/fireflysite/Guide.ff +456 -456
- package/fireflysite/Main.ff +163 -152
- package/fireflysite/MatchingPasswordsDemo.ff +82 -82
- package/fireflysite/PackagesOverview.ff +49 -49
- package/fireflysite/PostgresqlDemo.ff +34 -34
- package/fireflysite/ReferenceAll.ff +18 -18
- package/fireflysite/ReferenceIntroduction.ff +11 -11
- package/fireflysite/Styles.ff +567 -567
- package/fireflysite/Test.ff +121 -62
- package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
- package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
- package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
- package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
- package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -172
- package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
- package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
- package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
- package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
- package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
- package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
- package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
- package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
- package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
- package/lsp/.firefly/package.ff +1 -1
- package/lsp/CompletionHandler.ff +827 -827
- package/lsp/Handler.ff +714 -714
- package/lsp/HoverHandler.ff +79 -79
- package/lsp/LanguageServer.ff +272 -272
- package/lsp/SignatureHelpHandler.ff +55 -55
- package/lsp/SymbolHandler.ff +181 -181
- package/lsp/TestReferences.ff +17 -17
- package/lsp/TestReferencesCase.ff +7 -7
- package/lsp/stderr.txt +1 -1
- package/lsp/stdout.txt +34 -34
- package/lux/.firefly/package.ff +1 -1
- package/lux/Css.ff +648 -648
- package/lux/CssTest.ff +48 -48
- package/lux/Lux.ff +608 -617
- package/lux/LuxEvent.ff +79 -116
- package/lux/Main.ff +123 -123
- package/lux/Main2.ff +143 -143
- package/lux/TestDry.ff +28 -28
- package/output/js/ff/compiler/Builder.mjs +72 -71
- package/output/js/ff/compiler/Compiler.mjs +19 -13
- package/output/js/ff/compiler/Dependencies.mjs +8 -7
- package/output/js/ff/compiler/DependencyLock.mjs +6 -4
- package/output/js/ff/compiler/Deriver.mjs +26 -24
- package/output/js/ff/compiler/Dictionaries.mjs +14 -18
- package/output/js/ff/compiler/Environment.mjs +6 -4
- package/output/js/ff/compiler/Inference.mjs +238 -164
- package/output/js/ff/compiler/JsEmitter.mjs +1160 -350
- package/output/js/ff/compiler/JsImporter.mjs +20 -18
- package/output/js/ff/compiler/LspHook.mjs +12 -10
- package/output/js/ff/compiler/Main.mjs +61 -41
- package/output/js/ff/compiler/ModuleCache.mjs +10 -8
- package/output/js/ff/compiler/Parser.mjs +153 -669
- package/output/js/ff/compiler/Patterns.mjs +12 -10
- package/output/js/ff/compiler/Resolver.mjs +52 -78
- package/output/js/ff/compiler/Substitution.mjs +12 -16
- package/output/js/ff/compiler/Syntax.mjs +50 -341
- package/output/js/ff/compiler/Token.mjs +126 -4
- package/output/js/ff/compiler/Tokenizer.mjs +62 -52
- package/output/js/ff/compiler/Unification.mjs +74 -90
- package/output/js/ff/compiler/Wildcards.mjs +4 -2
- package/output/js/ff/compiler/Workspace.mjs +26 -20
- package/output/js/ff/core/Any.mjs +20 -20
- package/output/js/ff/core/Array.mjs +268 -175
- package/output/js/ff/core/AssetSystem.mjs +8 -6
- package/output/js/ff/core/Atomic.mjs +84 -52
- package/output/js/ff/core/Bool.mjs +6 -4
- package/output/js/ff/core/BrowserSystem.mjs +38 -29
- package/output/js/ff/core/Buffer.mjs +285 -133
- package/output/js/ff/core/BuildSystem.mjs +36 -56
- package/output/js/ff/core/Channel.mjs +250 -97
- package/output/js/ff/core/Char.mjs +5 -3
- package/output/js/ff/core/Core.mjs +28 -34
- package/output/js/ff/core/Crypto.mjs +30 -52
- package/output/js/ff/core/Duration.mjs +4 -2
- package/output/js/ff/core/Equal.mjs +14 -12
- package/output/js/ff/core/Error.mjs +17 -11
- package/output/js/ff/core/FileHandle.mjs +76 -38
- package/output/js/ff/core/Float.mjs +92 -160
- package/output/js/ff/core/HttpClient.mjs +208 -76
- package/output/js/ff/core/Instant.mjs +8 -10
- package/output/js/ff/core/Int.mjs +36 -26
- package/output/js/ff/core/IntMap.mjs +79 -33
- package/output/js/ff/core/Js.mjs +751 -0
- package/output/js/ff/core/JsSystem.mjs +54 -60
- package/output/js/ff/core/JsValue.mjs +294 -143
- package/output/js/ff/core/Json.mjs +443 -253
- package/output/js/ff/core/List.mjs +262 -214
- package/output/js/ff/core/Lock.mjs +156 -125
- package/output/js/ff/core/Log.mjs +20 -10
- package/output/js/ff/core/Map.mjs +10 -8
- package/output/js/ff/core/NodeSystem.mjs +189 -123
- package/output/js/ff/core/Nothing.mjs +4 -2
- package/output/js/ff/core/Option.mjs +40 -38
- package/output/js/ff/core/Ordering.mjs +26 -20
- package/output/js/ff/core/Pair.mjs +4 -2
- package/output/js/ff/core/Path.mjs +517 -315
- package/output/js/ff/core/Queue.mjs +306 -0
- package/output/js/ff/core/Random.mjs +141 -77
- package/output/js/ff/core/RbMap.mjs +36 -34
- package/output/js/ff/core/Serializable.mjs +44 -28
- package/output/js/ff/core/Set.mjs +6 -4
- package/output/js/ff/core/Show.mjs +8 -6
- package/output/js/ff/core/SourceLocation.mjs +4 -2
- package/output/js/ff/core/Stream.mjs +30 -50
- package/output/js/ff/core/String.mjs +263 -172
- package/output/js/ff/core/StringMap.mjs +77 -31
- package/output/js/ff/core/Task.mjs +91 -76
- package/output/js/ff/core/Try.mjs +20 -18
- package/output/js/ff/core/Unit.mjs +4 -2
- package/package.json +1 -1
- package/postgresql/Pg.ff +53 -59
- package/rpc/.firefly/package.ff +1 -1
- package/rpc/Rpc.ff +70 -70
- package/s3/.firefly/package.ff +1 -1
- package/s3/S3.ff +92 -94
- package/vscode/LICENSE.txt +21 -21
- package/vscode/Prepublish.ff +15 -15
- package/vscode/README.md +16 -16
- package/vscode/client/package-lock.json +544 -544
- package/vscode/client/package.json +22 -22
- package/vscode/client/src/extension.ts +104 -104
- package/vscode/icons/firefly-icon.svg +10 -10
- package/vscode/language-configuration.json +61 -61
- package/vscode/package-lock.json +3623 -3623
- package/vscode/package.json +1 -1
- package/vscode/snippets.json +241 -241
- package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
- package/webserver/.firefly/include/package.json +5 -5
- package/webserver/.firefly/package.ff +2 -2
- package/webserver/WebServer.ff +647 -685
- package/websocket/.firefly/package.ff +1 -1
- package/websocket/WebSocket.ff +100 -131
- package/core/UnsafeJs.ff +0 -42
- package/output/js/ff/core/UnsafeJs.mjs +0 -191
|
@@ -66,6 +66,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
66
66
|
|
|
67
67
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
68
68
|
|
|
69
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
70
|
+
|
|
69
71
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
70
72
|
|
|
71
73
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -92,6 +94,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
92
94
|
|
|
93
95
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
94
96
|
|
|
97
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
98
|
+
|
|
95
99
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
96
100
|
|
|
97
101
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -114,14 +118,12 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
114
118
|
|
|
115
119
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
116
120
|
|
|
117
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
118
|
-
|
|
119
121
|
// type Compiler
|
|
120
122
|
export function Compiler(emitTarget_, task_, compilerModulePath_, jsOutputPath_, packagePaths_, singleFilePackages_, virtualFiles_, cache_, lspHook_, phaseDurationDelta_, phaseDurations_) {
|
|
121
123
|
return {emitTarget_, task_, compilerModulePath_, jsOutputPath_, packagePaths_, singleFilePackages_, virtualFiles_, cache_, lspHook_, phaseDurationDelta_, phaseDurations_};
|
|
122
124
|
}
|
|
123
125
|
|
|
124
|
-
export const coreImports_ = ff_core_List.List_map(["Any", "Array", "AssetSystem", "Atomic", "Bool", "BrowserSystem", "Buffer", "BuildSystem", "Channel", "Char", "Core", "Crypto", "Duration", "Equal", "Error", "FileHandle", "Float", "HttpClient", "Instant", "Int", "IntMap", "Json", "JsValue", "JsSystem", "List", "Lock", "Log", "Map", "NodeSystem", "Nothing", "Option", "Ordering", "Pair", "Path", "Random", "Serializable", "Set", "Show", "SourceLocation", "Stream", "String", "StringMap", "Task", "Try", "Unit", "
|
|
126
|
+
export const coreImports_ = ff_core_List.List_map(["Any", "Array", "AssetSystem", "Atomic", "Bool", "BrowserSystem", "Buffer", "BuildSystem", "Channel", "Char", "Core", "Crypto", "Duration", "Equal", "Error", "FileHandle", "Float", "HttpClient", "Instant", "Int", "IntMap", "Json", "JsValue", "JsSystem", "List", "Lock", "Log", "Map", "NodeSystem", "Nothing", "Option", "Ordering", "Pair", "Path", "Queue", "Random", "Serializable", "Set", "Show", "SourceLocation", "Stream", "String", "StringMap", "Task", "Try", "Unit", "Js"], ((moduleName_) => {
|
|
125
127
|
return ff_compiler_Syntax.DImport(ff_compiler_Syntax.Location("<prelude>", 1, 1), moduleName_, ff_compiler_Syntax.PackagePair("ff", "core"), [], moduleName_)
|
|
126
128
|
}));
|
|
127
129
|
|
|
@@ -171,12 +173,14 @@ return ff_compiler_ModuleCache.ModuleCache_cacheParsedModule(self_.cache_, self_
|
|
|
171
173
|
const packageName_ = ff_compiler_Syntax.PackagePair_groupName(packagePair_, ":");
|
|
172
174
|
return ff_compiler_Compiler.Compiler_measure(self_, "Parse", packagePair_, moduleName_, (() => {
|
|
173
175
|
const code_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.virtualFiles_, ff_core_Path.Path_absolute(path_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
174
|
-
|
|
175
|
-
const
|
|
176
|
+
{
|
|
177
|
+
const if_o = importedAt_
|
|
178
|
+
if(if_o.Some) {
|
|
179
|
+
const at_ = if_o.value_;
|
|
176
180
|
if((!ff_core_Path.Path_exists(path_, false, false, false))) {
|
|
177
181
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ((("Imported module not found: " + packageName_) + "/") + moduleName_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
178
182
|
}
|
|
179
|
-
|
|
183
|
+
}
|
|
180
184
|
};
|
|
181
185
|
return ff_core_Path.Path_readText(path_)
|
|
182
186
|
}));
|
|
@@ -246,7 +250,7 @@ return ff_compiler_ModuleCache.ModuleCache_cacheInferredModule(self_.cache_, sel
|
|
|
246
250
|
return ff_compiler_Compiler.Compiler_measure(self_, "Infer", packagePair_, moduleName_, (() => {
|
|
247
251
|
const module_ = ff_compiler_Compiler.Compiler_derive(self_, packagePair_, moduleName_);
|
|
248
252
|
const otherModules_ = ff_core_List.List_map(ff_compiler_Compiler.Compiler_imports(self_, module_), ((i_) => {
|
|
249
|
-
return ff_compiler_Compiler.Compiler_derive(self_, i_.packagePair_, ff_core_String.String_dropLast(i_.file_,
|
|
253
|
+
return ff_compiler_Compiler.Compiler_derive(self_, i_.packagePair_, ff_core_String.String_dropLast(i_.file_, ".ff".length))
|
|
250
254
|
}));
|
|
251
255
|
const inference_ = ff_compiler_Inference.new_([module_, ...otherModules_], self_.lspHook_);
|
|
252
256
|
const inferredModule_ = ff_compiler_Inference.Inference_inferModule(inference_, module_, otherModules_);
|
|
@@ -260,7 +264,7 @@ ff_compiler_ModuleCache.ModuleCache_cacheEmittedModule(self_.cache_, self_.packa
|
|
|
260
264
|
ff_compiler_Compiler.Compiler_measure(self_, "Emit", packagePair_, moduleName_, (() => {
|
|
261
265
|
const module_ = ff_compiler_Compiler.Compiler_infer(self_, packagePair_, moduleName_);
|
|
262
266
|
const otherModules_ = ff_core_List.List_map(ff_compiler_Compiler.Compiler_imports(self_, module_), ((i_) => {
|
|
263
|
-
const newModuleName_ = ff_core_String.String_dropLast(i_.file_,
|
|
267
|
+
const newModuleName_ = ff_core_String.String_dropLast(i_.file_, ".ff".length);
|
|
264
268
|
ff_compiler_Compiler.Compiler_emit(self_, i_.packagePair_, newModuleName_, false);
|
|
265
269
|
return ff_compiler_Compiler.Compiler_infer(self_, i_.packagePair_, newModuleName_)
|
|
266
270
|
}));
|
|
@@ -306,12 +310,14 @@ return (await ff_compiler_ModuleCache.ModuleCache_cacheParsedModule$(self_.cache
|
|
|
306
310
|
const packageName_ = ff_compiler_Syntax.PackagePair_groupName(packagePair_, ":");
|
|
307
311
|
return (await ff_compiler_Compiler.Compiler_measure$(self_, "Parse", packagePair_, moduleName_, (async ($task) => {
|
|
308
312
|
const code_ = (await ff_core_Option.Option_else$(ff_core_Map.Map_get(self_.virtualFiles_, (await ff_core_Path.Path_absolute$(path_, $task)), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (async ($task) => {
|
|
309
|
-
|
|
310
|
-
const
|
|
313
|
+
{
|
|
314
|
+
const if_o = importedAt_
|
|
315
|
+
if(if_o.Some) {
|
|
316
|
+
const at_ = if_o.value_;
|
|
311
317
|
if((!(await ff_core_Path.Path_exists$(path_, false, false, false, $task)))) {
|
|
312
318
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ((("Imported module not found: " + packageName_) + "/") + moduleName_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
313
319
|
}
|
|
314
|
-
|
|
320
|
+
}
|
|
315
321
|
};
|
|
316
322
|
return (await ff_core_Path.Path_readText$(path_, $task))
|
|
317
323
|
}), $task));
|
|
@@ -381,7 +387,7 @@ return (await ff_compiler_ModuleCache.ModuleCache_cacheInferredModule$(self_.cac
|
|
|
381
387
|
return (await ff_compiler_Compiler.Compiler_measure$(self_, "Infer", packagePair_, moduleName_, (async ($task) => {
|
|
382
388
|
const module_ = (await ff_compiler_Compiler.Compiler_derive$(self_, packagePair_, moduleName_, $task));
|
|
383
389
|
const otherModules_ = (await ff_core_List.List_map$((await ff_compiler_Compiler.Compiler_imports$(self_, module_, $task)), (async (i_, $task) => {
|
|
384
|
-
return (await ff_compiler_Compiler.Compiler_derive$(self_, i_.packagePair_, ff_core_String.String_dropLast(i_.file_,
|
|
390
|
+
return (await ff_compiler_Compiler.Compiler_derive$(self_, i_.packagePair_, ff_core_String.String_dropLast(i_.file_, ".ff".length), $task))
|
|
385
391
|
}), $task));
|
|
386
392
|
const inference_ = ff_compiler_Inference.new_([module_, ...otherModules_], self_.lspHook_);
|
|
387
393
|
const inferredModule_ = ff_compiler_Inference.Inference_inferModule(inference_, module_, otherModules_);
|
|
@@ -395,7 +401,7 @@ export async function Compiler_emit$(self_, packagePair_, moduleName_, isMainMod
|
|
|
395
401
|
(await ff_compiler_Compiler.Compiler_measure$(self_, "Emit", packagePair_, moduleName_, (async ($task) => {
|
|
396
402
|
const module_ = (await ff_compiler_Compiler.Compiler_infer$(self_, packagePair_, moduleName_, $task));
|
|
397
403
|
const otherModules_ = (await ff_core_List.List_map$((await ff_compiler_Compiler.Compiler_imports$(self_, module_, $task)), (async (i_, $task) => {
|
|
398
|
-
const newModuleName_ = ff_core_String.String_dropLast(i_.file_,
|
|
404
|
+
const newModuleName_ = ff_core_String.String_dropLast(i_.file_, ".ff".length);
|
|
399
405
|
(await ff_compiler_Compiler.Compiler_emit$(self_, i_.packagePair_, newModuleName_, false, $task));
|
|
400
406
|
return (await ff_compiler_Compiler.Compiler_infer$(self_, i_.packagePair_, newModuleName_, $task))
|
|
401
407
|
}), $task));
|
|
@@ -56,6 +56,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
56
56
|
|
|
57
57
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
58
58
|
|
|
59
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
60
|
+
|
|
59
61
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
60
62
|
|
|
61
63
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -82,6 +84,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
82
84
|
|
|
83
85
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
84
86
|
|
|
87
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
88
|
+
|
|
85
89
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
86
90
|
|
|
87
91
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -104,8 +108,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
104
108
|
|
|
105
109
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
106
110
|
|
|
107
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
108
|
-
|
|
109
111
|
// type Dependencies
|
|
110
112
|
export function Dependencies(workspace_, packages_, packagePaths_, singleFilePackages_) {
|
|
111
113
|
return {workspace_, packages_, packagePaths_, singleFilePackages_};
|
|
@@ -152,7 +154,8 @@ ff_core_Core.panic_(((("Dependency declaration and package declaration disagree
|
|
|
152
154
|
}
|
|
153
155
|
|
|
154
156
|
export function internalExtractTarGz_(tarGzPath_, path_) {
|
|
155
|
-
|
|
157
|
+
const tar_ = import$0;
|
|
158
|
+
tar_.extract({file: tarGzPath_.absolutePath_, cwd: path_.absolutePath_, strict: true})
|
|
156
159
|
}
|
|
157
160
|
|
|
158
161
|
export async function process_$(fetch_, dependencyLock_, path_, $task) {
|
|
@@ -189,10 +192,8 @@ ff_core_Core.panic_(((("Dependency declaration and package declaration disagree
|
|
|
189
192
|
}
|
|
190
193
|
|
|
191
194
|
export async function internalExtractTarGz_$(tarGzPath_, path_, $task) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
await tar.extract({file: tarGzPath_, cwd: path_, strict: true})
|
|
195
|
-
|
|
195
|
+
const tar_ = import$0;
|
|
196
|
+
(await tar_.extract({file: tarGzPath_.absolutePath_, cwd: path_.absolutePath_, strict: true}))
|
|
196
197
|
}
|
|
197
198
|
|
|
198
199
|
export function Dependencies_loadPackageInfo(self_, packagePair_, path_) {
|
|
@@ -44,6 +44,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
44
44
|
|
|
45
45
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
46
46
|
|
|
47
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
48
|
+
|
|
47
49
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
48
50
|
|
|
49
51
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -70,6 +72,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
70
72
|
|
|
71
73
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
72
74
|
|
|
75
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
76
|
+
|
|
73
77
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
74
78
|
|
|
75
79
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -92,8 +96,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
92
96
|
|
|
93
97
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
94
98
|
|
|
95
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
96
|
-
|
|
97
99
|
// type DependencyLock
|
|
98
100
|
export function DependencyLock(doneLocks_, task_) {
|
|
99
101
|
return {doneLocks_, task_};
|
|
@@ -113,7 +115,7 @@ export function DependencyLock_do(self_, doneFile_, body_) {
|
|
|
113
115
|
const lock_ = ff_core_StringMap.StringMap_getOrSet(self_.doneLocks_, doneFile_, (() => {
|
|
114
116
|
return ff_core_Task.Task_lock(self_.task_)
|
|
115
117
|
}));
|
|
116
|
-
return ff_core_Lock.Lock_do(lock_,
|
|
118
|
+
return ff_core_Lock.Lock_do(lock_, (() => {
|
|
117
119
|
return body_()
|
|
118
120
|
}))
|
|
119
121
|
}
|
|
@@ -122,7 +124,7 @@ export async function DependencyLock_do$(self_, doneFile_, body_, $task) {
|
|
|
122
124
|
const lock_ = (await ff_core_StringMap.StringMap_getOrSet$(self_.doneLocks_, doneFile_, (async ($task) => {
|
|
123
125
|
return (await ff_core_Task.Task_lock$(self_.task_, $task))
|
|
124
126
|
}), $task));
|
|
125
|
-
return (await ff_core_Lock.Lock_do$(lock_,
|
|
127
|
+
return (await ff_core_Lock.Lock_do$(lock_, (async ($task) => {
|
|
126
128
|
return (await body_($task))
|
|
127
129
|
}), $task))
|
|
128
130
|
}
|
|
@@ -46,6 +46,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
46
46
|
|
|
47
47
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
48
48
|
|
|
49
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
50
|
+
|
|
49
51
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
50
52
|
|
|
51
53
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -72,6 +74,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
72
74
|
|
|
73
75
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
74
76
|
|
|
77
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
78
|
+
|
|
75
79
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
76
80
|
|
|
77
81
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -94,8 +98,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
94
98
|
|
|
95
99
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
96
100
|
|
|
97
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
98
|
-
|
|
99
101
|
// type Deriver
|
|
100
102
|
const Deriver$ = {Deriver: true};
|
|
101
103
|
export function Deriver() {
|
|
@@ -157,9 +159,9 @@ const typeArgumentStrings_ = ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
|
157
159
|
return ff_compiler_Deriver.Deriver_makeMethodCall(self_, at_, ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Any.anyTag", [], [_w1]), "show", [])
|
|
158
160
|
}));
|
|
159
161
|
const strings_ = [ff_compiler_Syntax.EString(at_, "\"[\""), ...ff_core_List.List_separate(typeArgumentStrings_, [ff_compiler_Syntax.EString(at_, "\",\"")]), ff_compiler_Syntax.EString(at_, "\"]\"")];
|
|
160
|
-
const body_ = ff_compiler_Syntax.
|
|
162
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, [ff_compiler_Syntax.MatchCase(at_, [], [], ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Any.internalAnyTag", [ff_core_List.List_foldLeft(strings_, ff_compiler_Syntax.EString(at_, (("\"" + selfTypeName_) + "\"")), ((a_, b_) => {
|
|
161
163
|
return ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "+", [a_, b_], [])
|
|
162
|
-
}))], []))])
|
|
164
|
+
}))], []))]);
|
|
163
165
|
const method_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
164
166
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Any.HasAnyTag", [selfType_], [], [method_], true)
|
|
165
167
|
}
|
|
@@ -185,7 +187,7 @@ return ff_compiler_Syntax.TConstructor(at_, t_, [])
|
|
|
185
187
|
const selfType_ = ff_compiler_Syntax.TConstructor(at_, ((modulePrefix_ + ".") + declaration_.name_), typeArguments_);
|
|
186
188
|
const noEffect_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Nothing.Nothing", []);
|
|
187
189
|
const signature_ = ff_compiler_Syntax.Signature(at_, "show", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "value", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/String.String", []), noEffect_);
|
|
188
|
-
const body_ = ff_compiler_Syntax.
|
|
190
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeShowCases(self_, modulePrefix_, declaration_, selfType_));
|
|
189
191
|
const showMethod_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
190
192
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Show.Show", [selfType_], [], [showMethod_], true)
|
|
191
193
|
}
|
|
@@ -238,7 +240,7 @@ return ff_compiler_Syntax.TConstructor(at_, t_, [])
|
|
|
238
240
|
const selfType_ = ff_compiler_Syntax.TConstructor(at_, ((modulePrefix_ + ".") + declaration_.name_), typeArguments_);
|
|
239
241
|
const noEffect_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Nothing.Nothing", []);
|
|
240
242
|
const signature_ = ff_compiler_Syntax.Signature(at_, "compare", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "x", selfType_, ff_core_Option.None()), ff_compiler_Syntax.Parameter(at_, false, "y", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/Ordering.Ordering", []), noEffect_);
|
|
241
|
-
const body_ = ff_compiler_Syntax.
|
|
243
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeOrderingCases(self_, modulePrefix_, declaration_, selfType_));
|
|
242
244
|
const compareMethod_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
243
245
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Ordering.Order", [selfType_], [], [compareMethod_], true)
|
|
244
246
|
}
|
|
@@ -277,7 +279,7 @@ const variantName_ = ((modulePrefix_ + ".") + variant_.name_);
|
|
|
277
279
|
return ff_compiler_Syntax.MatchCase(at_, [ff_compiler_Syntax.PVariantAs(at_, variantName_, at_, ff_core_Option.None())], [], ff_compiler_Syntax.EInt(at_, ("" + index_)))
|
|
278
280
|
}
|
|
279
281
|
}));
|
|
280
|
-
const differentVariant_ = ff_compiler_Syntax.MatchCase(at_, [wildcardPattern_, wildcardPattern_], [], ff_compiler_Syntax.EFunctions(at_, [ff_compiler_Syntax.DFunction(at_, numberSignature_, ff_compiler_Syntax.
|
|
282
|
+
const differentVariant_ = ff_compiler_Syntax.MatchCase(at_, [wildcardPattern_, wildcardPattern_], [], ff_compiler_Syntax.EFunctions(at_, [ff_compiler_Syntax.DFunction(at_, numberSignature_, ff_compiler_Syntax.Lambda(at_, noEffect_, numberCases_))], ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Ordering.compare", [ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "number", [ff_compiler_Syntax.EVariable(at_, "x")], []), ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "number", [ff_compiler_Syntax.EVariable(at_, "y")], [])], [])));
|
|
281
283
|
return [sameCase_, ...sameVariantCases_, differentVariant_]
|
|
282
284
|
}
|
|
283
285
|
}
|
|
@@ -294,7 +296,7 @@ const fields_a = fields_;
|
|
|
294
296
|
if(fields_a.length === 0) {
|
|
295
297
|
return orderingSame_
|
|
296
298
|
}
|
|
297
|
-
|
|
299
|
+
{
|
|
298
300
|
const head_ = fields_a[0];
|
|
299
301
|
const tail_ = fields_a.slice(1);
|
|
300
302
|
const variableName_ = (head_.name_ + "Ordering");
|
|
@@ -328,7 +330,7 @@ return ff_compiler_Syntax.TConstructor(at_, t_, [])
|
|
|
328
330
|
const selfType_ = ff_compiler_Syntax.TConstructor(at_, ((modulePrefix_ + ".") + declaration_.name_), typeArguments_);
|
|
329
331
|
const noEffect_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Nothing.Nothing", []);
|
|
330
332
|
const signature_ = ff_compiler_Syntax.Signature(at_, "equals", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "x", selfType_, ff_core_Option.None()), ff_compiler_Syntax.Parameter(at_, false, "y", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/Bool.Bool", []), noEffect_);
|
|
331
|
-
const body_ = ff_compiler_Syntax.
|
|
333
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeEqualsCases(self_, modulePrefix_, declaration_, selfType_));
|
|
332
334
|
const equalsMethod_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
333
335
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Equal.Equal", [selfType_], [], [equalsMethod_], true)
|
|
334
336
|
}
|
|
@@ -376,7 +378,7 @@ if(fields_a.length === 1) {
|
|
|
376
378
|
const head_ = fields_a[0];
|
|
377
379
|
return ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Equal.equals", [ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "x"), head_.name_), ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "y"), head_.name_)], [])
|
|
378
380
|
}
|
|
379
|
-
|
|
381
|
+
{
|
|
380
382
|
const head_ = fields_a[0];
|
|
381
383
|
const tail_ = fields_a.slice(1);
|
|
382
384
|
const equalsTerm_ = ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Equal.equals", [ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "x"), head_.name_), ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "y"), head_.name_)], []);
|
|
@@ -410,8 +412,8 @@ const serializationType_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Seriali
|
|
|
410
412
|
const serializeSignature_ = ff_compiler_Syntax.Signature(at_, "serializeUsing", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "serialization", serializationType_, ff_core_Option.None()), ff_compiler_Syntax.Parameter(at_, false, "value", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/Unit.Unit", []), noEffect_);
|
|
411
413
|
const deserializeSignature_ = ff_compiler_Syntax.Signature(at_, "deserializeUsing", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "serialization", serializationType_, ff_core_Option.None())], selfType_, noEffect_);
|
|
412
414
|
const wildcardPattern_ = ff_compiler_Syntax.PVariable(at_, ff_core_Option.None());
|
|
413
|
-
const serializeBody_ = ff_compiler_Syntax.
|
|
414
|
-
const deserializeBody_ = ff_compiler_Syntax.
|
|
415
|
+
const serializeBody_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeSerializeBody(self_, modulePrefix_, declaration_, selfType_));
|
|
416
|
+
const deserializeBody_ = ff_compiler_Syntax.Lambda(at_, noEffect_, [ff_compiler_Syntax.MatchCase(at_, [wildcardPattern_], [], ff_compiler_Deriver.Deriver_makeDeserializeBody(self_, modulePrefix_, declaration_, selfType_))]);
|
|
415
417
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Serializable.Serializable", [selfType_], [], [ff_compiler_Syntax.DFunction(at_, serializeSignature_, serializeBody_), ff_compiler_Syntax.DFunction(at_, deserializeSignature_, deserializeBody_)], true)
|
|
416
418
|
}
|
|
417
419
|
|
|
@@ -471,7 +473,7 @@ return ff_compiler_Syntax.ELet(at_, false, "variantIndex", intType_, grabVariant
|
|
|
471
473
|
|
|
472
474
|
export function Deriver_makeUpdateChecksum(self_, at_, variantName_, declaration_, variant_) {
|
|
473
475
|
const fields_ = [...declaration_.commonFields_, ...variant_.fields_];
|
|
474
|
-
const variantChecksum_ =
|
|
476
|
+
const variantChecksum_ = variantName_.length;
|
|
475
477
|
return ff_compiler_Syntax.EAssignField(at_, "", ff_compiler_Syntax.EVariable(at_, "serialization"), "checksum", ff_compiler_Deriver.Deriver_makeMethodCall(self_, at_, ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "+", [ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "*", [ff_compiler_Syntax.EInt(at_, "31"), ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "serialization"), "checksum")], []), ff_compiler_Syntax.EInt(at_, ("" + variantChecksum_))], []), "bitOr", [ff_compiler_Syntax.EInt(at_, "0")]))
|
|
476
478
|
}
|
|
477
479
|
|
|
@@ -559,9 +561,9 @@ const typeArgumentStrings_ = ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
|
559
561
|
return ff_compiler_Deriver.Deriver_makeMethodCall(self_, at_, ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Any.anyTag", [], [_w1]), "show", [])
|
|
560
562
|
}));
|
|
561
563
|
const strings_ = [ff_compiler_Syntax.EString(at_, "\"[\""), ...ff_core_List.List_separate(typeArgumentStrings_, [ff_compiler_Syntax.EString(at_, "\",\"")]), ff_compiler_Syntax.EString(at_, "\"]\"")];
|
|
562
|
-
const body_ = ff_compiler_Syntax.
|
|
564
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, [ff_compiler_Syntax.MatchCase(at_, [], [], ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Any.internalAnyTag", [ff_core_List.List_foldLeft(strings_, ff_compiler_Syntax.EString(at_, (("\"" + selfTypeName_) + "\"")), ((a_, b_) => {
|
|
563
565
|
return ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "+", [a_, b_], [])
|
|
564
|
-
}))], []))])
|
|
566
|
+
}))], []))]);
|
|
565
567
|
const method_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
566
568
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Any.HasAnyTag", [selfType_], [], [method_], true)
|
|
567
569
|
}
|
|
@@ -587,7 +589,7 @@ return ff_compiler_Syntax.TConstructor(at_, t_, [])
|
|
|
587
589
|
const selfType_ = ff_compiler_Syntax.TConstructor(at_, ((modulePrefix_ + ".") + declaration_.name_), typeArguments_);
|
|
588
590
|
const noEffect_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Nothing.Nothing", []);
|
|
589
591
|
const signature_ = ff_compiler_Syntax.Signature(at_, "show", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "value", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/String.String", []), noEffect_);
|
|
590
|
-
const body_ = ff_compiler_Syntax.
|
|
592
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeShowCases(self_, modulePrefix_, declaration_, selfType_));
|
|
591
593
|
const showMethod_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
592
594
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Show.Show", [selfType_], [], [showMethod_], true)
|
|
593
595
|
}
|
|
@@ -640,7 +642,7 @@ return ff_compiler_Syntax.TConstructor(at_, t_, [])
|
|
|
640
642
|
const selfType_ = ff_compiler_Syntax.TConstructor(at_, ((modulePrefix_ + ".") + declaration_.name_), typeArguments_);
|
|
641
643
|
const noEffect_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Nothing.Nothing", []);
|
|
642
644
|
const signature_ = ff_compiler_Syntax.Signature(at_, "compare", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "x", selfType_, ff_core_Option.None()), ff_compiler_Syntax.Parameter(at_, false, "y", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/Ordering.Ordering", []), noEffect_);
|
|
643
|
-
const body_ = ff_compiler_Syntax.
|
|
645
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeOrderingCases(self_, modulePrefix_, declaration_, selfType_));
|
|
644
646
|
const compareMethod_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
645
647
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Ordering.Order", [selfType_], [], [compareMethod_], true)
|
|
646
648
|
}
|
|
@@ -679,7 +681,7 @@ const variantName_ = ((modulePrefix_ + ".") + variant_.name_);
|
|
|
679
681
|
return ff_compiler_Syntax.MatchCase(at_, [ff_compiler_Syntax.PVariantAs(at_, variantName_, at_, ff_core_Option.None())], [], ff_compiler_Syntax.EInt(at_, ("" + index_)))
|
|
680
682
|
}
|
|
681
683
|
}));
|
|
682
|
-
const differentVariant_ = ff_compiler_Syntax.MatchCase(at_, [wildcardPattern_, wildcardPattern_], [], ff_compiler_Syntax.EFunctions(at_, [ff_compiler_Syntax.DFunction(at_, numberSignature_, ff_compiler_Syntax.
|
|
684
|
+
const differentVariant_ = ff_compiler_Syntax.MatchCase(at_, [wildcardPattern_, wildcardPattern_], [], ff_compiler_Syntax.EFunctions(at_, [ff_compiler_Syntax.DFunction(at_, numberSignature_, ff_compiler_Syntax.Lambda(at_, noEffect_, numberCases_))], ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Ordering.compare", [ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "number", [ff_compiler_Syntax.EVariable(at_, "x")], []), ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "number", [ff_compiler_Syntax.EVariable(at_, "y")], [])], [])));
|
|
683
685
|
return [sameCase_, ...sameVariantCases_, differentVariant_]
|
|
684
686
|
}
|
|
685
687
|
}
|
|
@@ -696,7 +698,7 @@ const fields_a = fields_;
|
|
|
696
698
|
if(fields_a.length === 0) {
|
|
697
699
|
return orderingSame_
|
|
698
700
|
}
|
|
699
|
-
|
|
701
|
+
{
|
|
700
702
|
const head_ = fields_a[0];
|
|
701
703
|
const tail_ = fields_a.slice(1);
|
|
702
704
|
const variableName_ = (head_.name_ + "Ordering");
|
|
@@ -730,7 +732,7 @@ return ff_compiler_Syntax.TConstructor(at_, t_, [])
|
|
|
730
732
|
const selfType_ = ff_compiler_Syntax.TConstructor(at_, ((modulePrefix_ + ".") + declaration_.name_), typeArguments_);
|
|
731
733
|
const noEffect_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Nothing.Nothing", []);
|
|
732
734
|
const signature_ = ff_compiler_Syntax.Signature(at_, "equals", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "x", selfType_, ff_core_Option.None()), ff_compiler_Syntax.Parameter(at_, false, "y", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/Bool.Bool", []), noEffect_);
|
|
733
|
-
const body_ = ff_compiler_Syntax.
|
|
735
|
+
const body_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeEqualsCases(self_, modulePrefix_, declaration_, selfType_));
|
|
734
736
|
const equalsMethod_ = ff_compiler_Syntax.DFunction(at_, signature_, body_);
|
|
735
737
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Equal.Equal", [selfType_], [], [equalsMethod_], true)
|
|
736
738
|
}
|
|
@@ -778,7 +780,7 @@ if(fields_a.length === 1) {
|
|
|
778
780
|
const head_ = fields_a[0];
|
|
779
781
|
return ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Equal.equals", [ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "x"), head_.name_), ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "y"), head_.name_)], [])
|
|
780
782
|
}
|
|
781
|
-
|
|
783
|
+
{
|
|
782
784
|
const head_ = fields_a[0];
|
|
783
785
|
const tail_ = fields_a.slice(1);
|
|
784
786
|
const equalsTerm_ = ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "ff:core/Equal.equals", [ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "x"), head_.name_), ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "y"), head_.name_)], []);
|
|
@@ -812,8 +814,8 @@ const serializationType_ = ff_compiler_Syntax.TConstructor(at_, "ff:core/Seriali
|
|
|
812
814
|
const serializeSignature_ = ff_compiler_Syntax.Signature(at_, "serializeUsing", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "serialization", serializationType_, ff_core_Option.None()), ff_compiler_Syntax.Parameter(at_, false, "value", selfType_, ff_core_Option.None())], ff_compiler_Syntax.TConstructor(at_, "ff:core/Unit.Unit", []), noEffect_);
|
|
813
815
|
const deserializeSignature_ = ff_compiler_Syntax.Signature(at_, "deserializeUsing", false, [], [], [ff_compiler_Syntax.Parameter(at_, false, "serialization", serializationType_, ff_core_Option.None())], selfType_, noEffect_);
|
|
814
816
|
const wildcardPattern_ = ff_compiler_Syntax.PVariable(at_, ff_core_Option.None());
|
|
815
|
-
const serializeBody_ = ff_compiler_Syntax.
|
|
816
|
-
const deserializeBody_ = ff_compiler_Syntax.
|
|
817
|
+
const serializeBody_ = ff_compiler_Syntax.Lambda(at_, noEffect_, ff_compiler_Deriver.Deriver_makeSerializeBody(self_, modulePrefix_, declaration_, selfType_));
|
|
818
|
+
const deserializeBody_ = ff_compiler_Syntax.Lambda(at_, noEffect_, [ff_compiler_Syntax.MatchCase(at_, [wildcardPattern_], [], ff_compiler_Deriver.Deriver_makeDeserializeBody(self_, modulePrefix_, declaration_, selfType_))]);
|
|
817
819
|
return ff_compiler_Syntax.DInstance(at_, declaration_.generics_, constraints_, "ff:core/Serializable.Serializable", [selfType_], [], [ff_compiler_Syntax.DFunction(at_, serializeSignature_, serializeBody_), ff_compiler_Syntax.DFunction(at_, deserializeSignature_, deserializeBody_)], true)
|
|
818
820
|
}
|
|
819
821
|
|
|
@@ -873,7 +875,7 @@ return ff_compiler_Syntax.ELet(at_, false, "variantIndex", intType_, grabVariant
|
|
|
873
875
|
|
|
874
876
|
export async function Deriver_makeUpdateChecksum$(self_, at_, variantName_, declaration_, variant_, $task) {
|
|
875
877
|
const fields_ = [...declaration_.commonFields_, ...variant_.fields_];
|
|
876
|
-
const variantChecksum_ =
|
|
878
|
+
const variantChecksum_ = variantName_.length;
|
|
877
879
|
return ff_compiler_Syntax.EAssignField(at_, "", ff_compiler_Syntax.EVariable(at_, "serialization"), "checksum", ff_compiler_Deriver.Deriver_makeMethodCall(self_, at_, ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "+", [ff_compiler_Deriver.Deriver_makeSimpleCall(self_, at_, "*", [ff_compiler_Syntax.EInt(at_, "31"), ff_compiler_Syntax.EField(at_, false, ff_compiler_Syntax.EVariable(at_, "serialization"), "checksum")], []), ff_compiler_Syntax.EInt(at_, ("" + variantChecksum_))], []), "bitOr", [ff_compiler_Syntax.EInt(at_, "0")]))
|
|
878
880
|
}
|
|
879
881
|
|
|
@@ -50,6 +50,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
50
50
|
|
|
51
51
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
52
52
|
|
|
53
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
54
|
+
|
|
53
55
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
54
56
|
|
|
55
57
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -76,6 +78,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
76
78
|
|
|
77
79
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
78
80
|
|
|
81
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
82
|
+
|
|
79
83
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
80
84
|
|
|
81
85
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -98,8 +102,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
98
102
|
|
|
99
103
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
100
104
|
|
|
101
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
102
|
-
|
|
103
105
|
// type Dictionaries
|
|
104
106
|
export function Dictionaries(instances_) {
|
|
105
107
|
return {instances_};
|
|
@@ -122,7 +124,7 @@ if(_1.TConstructor) {
|
|
|
122
124
|
const name_ = _1.name_;
|
|
123
125
|
return name_
|
|
124
126
|
}
|
|
125
|
-
|
|
127
|
+
{
|
|
126
128
|
const i_ = _1.index_;
|
|
127
129
|
return ff_compiler_Dictionaries.fail_(c_.at_, ("Unexpected unification variable: $" + i_))
|
|
128
130
|
}
|
|
@@ -146,7 +148,7 @@ if(_1.TConstructor) {
|
|
|
146
148
|
const name_ = _1.name_;
|
|
147
149
|
return name_
|
|
148
150
|
}
|
|
149
|
-
|
|
151
|
+
{
|
|
150
152
|
const i_ = _1.index_;
|
|
151
153
|
return ff_compiler_Dictionaries.fail_(c_.at_, ("Unexpected unification variable: $" + i_))
|
|
152
154
|
}
|
|
@@ -222,10 +224,7 @@ return ff_compiler_Dictionaries.Dictionaries(ff_core_Map.Map_addAll(self_.instan
|
|
|
222
224
|
const _1 = definition_;
|
|
223
225
|
{
|
|
224
226
|
const _c = _1;
|
|
225
|
-
return ff_compiler_Syntax.DFunction(_c.at_, _c.signature_,
|
|
226
|
-
return ff_compiler_Dictionaries.Dictionaries_processLambda(self2_, functions_, _w1)
|
|
227
|
-
})))
|
|
228
|
-
return
|
|
227
|
+
return ff_compiler_Syntax.DFunction(_c.at_, _c.signature_, ff_compiler_Dictionaries.Dictionaries_processLambda(self2_, functions_, definition_.body_))
|
|
229
228
|
}
|
|
230
229
|
}
|
|
231
230
|
}
|
|
@@ -439,7 +438,7 @@ return ff_compiler_Syntax.DynamicCall(ff_compiler_Dictionaries.Dictionaries_proc
|
|
|
439
438
|
}
|
|
440
439
|
return
|
|
441
440
|
}
|
|
442
|
-
|
|
441
|
+
{
|
|
443
442
|
return e_.target_
|
|
444
443
|
}
|
|
445
444
|
}))(e_.target_);
|
|
@@ -497,7 +496,7 @@ return ff_compiler_Syntax.EAssign(_c.at_, _c.operator_, _c.variable_, ff_compile
|
|
|
497
496
|
}
|
|
498
497
|
return
|
|
499
498
|
}
|
|
500
|
-
|
|
499
|
+
{
|
|
501
500
|
const e_ = _1;
|
|
502
501
|
{
|
|
503
502
|
const _1 = e_;
|
|
@@ -549,7 +548,7 @@ return ff_compiler_Dictionaries.Dictionaries_makeDictionary(self_, at_, instance
|
|
|
549
548
|
}));
|
|
550
549
|
return ff_compiler_Syntax.Dictionary(instance_.packagePair_, instance_.moduleName_, constraint_.name_, firstType_.name_, dictionaries_)
|
|
551
550
|
}
|
|
552
|
-
|
|
551
|
+
{
|
|
553
552
|
const t_ = _1;
|
|
554
553
|
return ff_compiler_Dictionaries.fail_(t_.at_, " is still a unification variable")
|
|
555
554
|
}
|
|
@@ -623,10 +622,7 @@ return ff_compiler_Dictionaries.Dictionaries(ff_core_Map.Map_addAll(self_.instan
|
|
|
623
622
|
const _1 = definition_;
|
|
624
623
|
{
|
|
625
624
|
const _c = _1;
|
|
626
|
-
return ff_compiler_Syntax.DFunction(_c.at_, _c.signature_,
|
|
627
|
-
return ff_compiler_Dictionaries.Dictionaries_processLambda(self2_, functions_, _w1)
|
|
628
|
-
})))
|
|
629
|
-
return
|
|
625
|
+
return ff_compiler_Syntax.DFunction(_c.at_, _c.signature_, ff_compiler_Dictionaries.Dictionaries_processLambda(self2_, functions_, definition_.body_))
|
|
630
626
|
}
|
|
631
627
|
}
|
|
632
628
|
}
|
|
@@ -840,7 +836,7 @@ return ff_compiler_Syntax.DynamicCall(ff_compiler_Dictionaries.Dictionaries_proc
|
|
|
840
836
|
}
|
|
841
837
|
return
|
|
842
838
|
}
|
|
843
|
-
|
|
839
|
+
{
|
|
844
840
|
return e_.target_
|
|
845
841
|
}
|
|
846
842
|
}))(e_.target_);
|
|
@@ -898,7 +894,7 @@ return ff_compiler_Syntax.EAssign(_c.at_, _c.operator_, _c.variable_, ff_compile
|
|
|
898
894
|
}
|
|
899
895
|
return
|
|
900
896
|
}
|
|
901
|
-
|
|
897
|
+
{
|
|
902
898
|
const e_ = _1;
|
|
903
899
|
{
|
|
904
900
|
const _1 = e_;
|
|
@@ -950,7 +946,7 @@ return ff_compiler_Dictionaries.Dictionaries_makeDictionary(self_, at_, instance
|
|
|
950
946
|
}));
|
|
951
947
|
return ff_compiler_Syntax.Dictionary(instance_.packagePair_, instance_.moduleName_, constraint_.name_, firstType_.name_, dictionaries_)
|
|
952
948
|
}
|
|
953
|
-
|
|
949
|
+
{
|
|
954
950
|
const t_ = _1;
|
|
955
951
|
return ff_compiler_Dictionaries.fail_(t_.at_, " is still a unification variable")
|
|
956
952
|
}
|
|
@@ -46,6 +46,8 @@ import * as ff_core_Int from "../../ff/core/Int.mjs"
|
|
|
46
46
|
|
|
47
47
|
import * as ff_core_IntMap from "../../ff/core/IntMap.mjs"
|
|
48
48
|
|
|
49
|
+
import * as ff_core_Js from "../../ff/core/Js.mjs"
|
|
50
|
+
|
|
49
51
|
import * as ff_core_JsSystem from "../../ff/core/JsSystem.mjs"
|
|
50
52
|
|
|
51
53
|
import * as ff_core_JsValue from "../../ff/core/JsValue.mjs"
|
|
@@ -72,6 +74,8 @@ import * as ff_core_Pair from "../../ff/core/Pair.mjs"
|
|
|
72
74
|
|
|
73
75
|
import * as ff_core_Path from "../../ff/core/Path.mjs"
|
|
74
76
|
|
|
77
|
+
import * as ff_core_Queue from "../../ff/core/Queue.mjs"
|
|
78
|
+
|
|
75
79
|
import * as ff_core_Random from "../../ff/core/Random.mjs"
|
|
76
80
|
|
|
77
81
|
import * as ff_core_Serializable from "../../ff/core/Serializable.mjs"
|
|
@@ -94,8 +98,6 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
94
98
|
|
|
95
99
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
96
100
|
|
|
97
|
-
import * as ff_core_UnsafeJs from "../../ff/core/UnsafeJs.mjs"
|
|
98
|
-
|
|
99
101
|
// type Environment
|
|
100
102
|
export function Environment(modulePrefix_, symbols_, traits_, imports_, effect_, selfVariable_) {
|
|
101
103
|
return {modulePrefix_, symbols_, traits_, imports_, effect_, selfVariable_};
|
|
@@ -172,7 +174,7 @@ if(_1.TVariable) {
|
|
|
172
174
|
const t_ = _1;
|
|
173
175
|
return ff_compiler_Environment.fail_(t_.at_, ("Unexpected type variable: $" + t_.index_))
|
|
174
176
|
}
|
|
175
|
-
|
|
177
|
+
{
|
|
176
178
|
const t_ = _1;
|
|
177
179
|
const prefix_ = (t_.name_ + "_");
|
|
178
180
|
const selfParameter_ = ff_compiler_Syntax.Parameter(d_.at_, false, d_.name_, d_.type_, ff_core_Option.None());
|
|
@@ -283,7 +285,7 @@ if(_1.TVariable) {
|
|
|
283
285
|
const t_ = _1;
|
|
284
286
|
return ff_compiler_Environment.fail_(t_.at_, ("Unexpected type variable: $" + t_.index_))
|
|
285
287
|
}
|
|
286
|
-
|
|
288
|
+
{
|
|
287
289
|
const t_ = _1;
|
|
288
290
|
const prefix_ = (t_.name_ + "_");
|
|
289
291
|
const selfParameter_ = ff_compiler_Syntax.Parameter(d_.at_, false, d_.name_, d_.type_, ff_core_Option.None());
|