firefly-compiler 0.4.17 → 0.4.19

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.
Files changed (115) hide show
  1. package/compiler/Builder.ff +1 -1
  2. package/compiler/Compiler.ff +6 -5
  3. package/compiler/Inference.ff +31 -19
  4. package/compiler/JsEmitter.ff +98 -71
  5. package/compiler/JsImporter.ff +1 -1
  6. package/compiler/LspHook.ff +4 -4
  7. package/compiler/Main.ff +6 -6
  8. package/compiler/Parser.ff +39 -39
  9. package/compiler/Patterns.ff +2 -0
  10. package/compiler/Syntax.ff +1 -1
  11. package/compiler/Tokenizer.ff +2 -2
  12. package/compiler/Workspace.ff +2 -2
  13. package/core/Array.ff +135 -294
  14. package/core/Buffer.ff +3 -3
  15. package/core/BuildSystem.ff +1 -1
  16. package/core/Equal.ff +36 -52
  17. package/core/HttpClient.ff +1 -1
  18. package/core/IntMap.ff +14 -18
  19. package/core/JsSystem.ff +1 -1
  20. package/core/JsValue.ff +6 -12
  21. package/core/Json.ff +19 -28
  22. package/core/List.ff +281 -312
  23. package/core/Map.ff +4 -8
  24. package/core/NodeSystem.ff +2 -2
  25. package/core/Option.ff +0 -4
  26. package/core/Ordering.ff +10 -6
  27. package/core/Pair.ff +0 -4
  28. package/core/Random.ff +12 -26
  29. package/core/RbMap.ff +216 -216
  30. package/core/Serializable.ff +9 -18
  31. package/core/Set.ff +0 -1
  32. package/core/SourceLocation.ff +1 -1
  33. package/core/Stack.ff +32 -45
  34. package/core/Stream.ff +10 -14
  35. package/core/String.ff +24 -6
  36. package/core/StringMap.ff +15 -19
  37. package/guide/Main.ff +20 -2
  38. package/lsp/CompletionHandler.ff +4 -4
  39. package/lsp/Handler.ff +45 -34
  40. package/lsp/HoverHandler.ff +2 -2
  41. package/lsp/LanguageServer.ff +2 -2
  42. package/lsp/SignatureHelpHandler.ff +1 -1
  43. package/lsp/SymbolHandler.ff +1 -1
  44. package/lux/Lux.ff +3 -3
  45. package/output/js/ff/compiler/Builder.mjs +19 -21
  46. package/output/js/ff/compiler/Compiler.mjs +18 -20
  47. package/output/js/ff/compiler/Dependencies.mjs +8 -10
  48. package/output/js/ff/compiler/Deriver.mjs +234 -236
  49. package/output/js/ff/compiler/Dictionaries.mjs +6 -8
  50. package/output/js/ff/compiler/Environment.mjs +42 -44
  51. package/output/js/ff/compiler/Inference.mjs +346 -304
  52. package/output/js/ff/compiler/JsEmitter.mjs +907 -833
  53. package/output/js/ff/compiler/JsImporter.mjs +0 -2
  54. package/output/js/ff/compiler/LspHook.mjs +10 -12
  55. package/output/js/ff/compiler/Main.mjs +109 -111
  56. package/output/js/ff/compiler/Parser.mjs +405 -407
  57. package/output/js/ff/compiler/Patterns.mjs +64 -50
  58. package/output/js/ff/compiler/Resolver.mjs +36 -38
  59. package/output/js/ff/compiler/Substitution.mjs +4 -6
  60. package/output/js/ff/compiler/Syntax.mjs +160 -162
  61. package/output/js/ff/compiler/Token.mjs +52 -54
  62. package/output/js/ff/compiler/Tokenizer.mjs +16 -18
  63. package/output/js/ff/compiler/Unification.mjs +24 -26
  64. package/output/js/ff/compiler/Wildcards.mjs +0 -2
  65. package/output/js/ff/compiler/Workspace.mjs +18 -20
  66. package/output/js/ff/core/Any.mjs +0 -2
  67. package/output/js/ff/core/Array.mjs +216 -613
  68. package/output/js/ff/core/AssetSystem.mjs +2 -4
  69. package/output/js/ff/core/Atomic.mjs +0 -2
  70. package/output/js/ff/core/Bool.mjs +0 -2
  71. package/output/js/ff/core/Box.mjs +0 -2
  72. package/output/js/ff/core/BrowserSystem.mjs +0 -2
  73. package/output/js/ff/core/Buffer.mjs +0 -2
  74. package/output/js/ff/core/BuildSystem.mjs +12 -14
  75. package/output/js/ff/core/Channel.mjs +0 -2
  76. package/output/js/ff/core/Char.mjs +0 -2
  77. package/output/js/ff/core/Core.mjs +0 -2
  78. package/output/js/ff/core/Duration.mjs +0 -2
  79. package/output/js/ff/core/Equal.mjs +0 -22
  80. package/output/js/ff/core/Error.mjs +0 -2
  81. package/output/js/ff/core/FileHandle.mjs +0 -2
  82. package/output/js/ff/core/Float.mjs +0 -2
  83. package/output/js/ff/core/HttpClient.mjs +2 -4
  84. package/output/js/ff/core/Instant.mjs +0 -2
  85. package/output/js/ff/core/Int.mjs +8 -10
  86. package/output/js/ff/core/IntMap.mjs +32 -42
  87. package/output/js/ff/core/JsSystem.mjs +1 -3
  88. package/output/js/ff/core/JsValue.mjs +5 -12
  89. package/output/js/ff/core/Json.mjs +23 -56
  90. package/output/js/ff/core/List.mjs +648 -1989
  91. package/output/js/ff/core/Lock.mjs +0 -2
  92. package/output/js/ff/core/Log.mjs +0 -2
  93. package/output/js/ff/core/Map.mjs +10 -20
  94. package/output/js/ff/core/NodeSystem.mjs +6 -8
  95. package/output/js/ff/core/Nothing.mjs +0 -2
  96. package/output/js/ff/core/Option.mjs +8 -18
  97. package/output/js/ff/core/Ordering.mjs +20 -98
  98. package/output/js/ff/core/Pair.mjs +6 -16
  99. package/output/js/ff/core/Path.mjs +12 -14
  100. package/output/js/ff/core/Random.mjs +24 -54
  101. package/output/js/ff/core/RbMap.mjs +54 -56
  102. package/output/js/ff/core/Serializable.mjs +19 -36
  103. package/output/js/ff/core/Set.mjs +0 -14
  104. package/output/js/ff/core/Show.mjs +0 -2
  105. package/output/js/ff/core/SourceLocation.mjs +0 -2
  106. package/output/js/ff/core/Stream.mjs +34 -44
  107. package/output/js/ff/core/String.mjs +31 -5
  108. package/output/js/ff/core/StringMap.mjs +32 -42
  109. package/output/js/ff/core/Task.mjs +0 -2
  110. package/output/js/ff/core/Try.mjs +0 -2
  111. package/output/js/ff/core/Unit.mjs +0 -2
  112. package/package.json +1 -1
  113. package/vscode/package.json +1 -1
  114. package/webserver/WebServer.ff +8 -8
  115. package/output/js/ff/core/Stack.mjs +0 -603
@@ -82,8 +82,6 @@ import * as ff_core_Show from "../../ff/core/Show.mjs"
82
82
 
83
83
  import * as ff_core_SourceLocation from "../../ff/core/SourceLocation.mjs"
84
84
 
85
- import * as ff_core_Stack from "../../ff/core/Stack.mjs"
86
-
87
85
  import * as ff_core_Stream from "../../ff/core/Stream.mjs"
88
86
 
89
87
  import * as ff_core_String from "../../ff/core/String.mjs"
@@ -86,8 +86,6 @@ import * as ff_core_Show from "../../ff/core/Show.mjs"
86
86
 
87
87
  import * as ff_core_SourceLocation from "../../ff/core/SourceLocation.mjs"
88
88
 
89
- import * as ff_core_Stack from "../../ff/core/Stack.mjs"
90
-
91
89
  import * as ff_core_Stream from "../../ff/core/Stream.mjs"
92
90
 
93
91
  import * as ff_core_String from "../../ff/core/String.mjs"
@@ -101,8 +99,8 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
101
99
  import * as ff_core_Unit from "../../ff/core/Unit.mjs"
102
100
 
103
101
  // type LspHook
104
- export function LspHook(at_, definedAt_, insertIdentifier_, trackSymbols_, stackOfResults_) {
105
- return {at_, definedAt_, insertIdentifier_, trackSymbols_, stackOfResults_};
102
+ export function LspHook(at_, definedAt_, insertIdentifier_, trackSymbols_, arrayOfResults_) {
103
+ return {at_, definedAt_, insertIdentifier_, trackSymbols_, arrayOfResults_};
106
104
  }
107
105
 
108
106
  // type SymbolHook
@@ -180,7 +178,7 @@ return ff_compiler_LspHook.LspHook(ff_core_Option.Option_else(at_, (() => {
180
178
  return ff_compiler_Syntax.Location("^lsp", (-7), (-7))
181
179
  })), ff_core_Option.Option_else(definedAt_, (() => {
182
180
  return ff_compiler_Syntax.Location("^lsp", (-7), (-7))
183
- })), insertIdentifier_, trackSymbols_, ff_core_List.List_toStack(ff_core_List.Empty()))
181
+ })), insertIdentifier_, trackSymbols_, ff_core_List.List_toArray([]))
184
182
  }
185
183
 
186
184
  export function strictlyBetween_(afterAt_, beforeAt_, at_, extraColumns_) {
@@ -368,7 +366,7 @@ return ff_compiler_LspHook.LspHook(ff_core_Option.Option_else(at_, (() => {
368
366
  return ff_compiler_Syntax.Location("^lsp", (-7), (-7))
369
367
  })), ff_core_Option.Option_else(definedAt_, (() => {
370
368
  return ff_compiler_Syntax.Location("^lsp", (-7), (-7))
371
- })), insertIdentifier_, trackSymbols_, ff_core_List.List_toStack(ff_core_List.Empty()))
369
+ })), insertIdentifier_, trackSymbols_, ff_core_List.List_toArray([]))
372
370
  }
373
371
 
374
372
  export async function strictlyBetween_$(afterAt_, beforeAt_, at_, extraColumns_, $task) {
@@ -560,11 +558,11 @@ return (((self_.definedAt_.line_ === at_.line_) && (self_.definedAt_.column_ ===
560
558
  }
561
559
 
562
560
  export function LspHook_emit(self_, result_) {
563
- ff_core_Stack.Stack_push(self_.stackOfResults_, result_)
561
+ ff_core_Array.Array_push(self_.arrayOfResults_, result_)
564
562
  }
565
563
 
566
564
  export function LspHook_results(self_) {
567
- return ff_core_Stack.Stack_toList(self_.stackOfResults_, 0, 9007199254740991)
565
+ return ff_core_Array.Array_toList(self_.arrayOfResults_, 0, 9007199254740991)
568
566
  }
569
567
 
570
568
  export async function LspHook_isEnabled$(self_, $task) {
@@ -580,11 +578,11 @@ return (((self_.definedAt_.line_ === at_.line_) && (self_.definedAt_.column_ ===
580
578
  }
581
579
 
582
580
  export async function LspHook_emit$(self_, result_, $task) {
583
- ff_core_Stack.Stack_push(self_.stackOfResults_, result_)
581
+ ff_core_Array.Array_push(self_.arrayOfResults_, result_)
584
582
  }
585
583
 
586
584
  export async function LspHook_results$(self_, $task) {
587
- return ff_core_Stack.Stack_toList(self_.stackOfResults_, 0, 9007199254740991)
585
+ return ff_core_Array.Array_toList(self_.arrayOfResults_, 0, 9007199254740991)
588
586
  }
589
587
 
590
588
  export const ff_core_Any_HasAnyTag$ff_compiler_LspHook_SymbolHook = {
@@ -747,7 +745,7 @@ serialization_.offset_ += 1;
747
745
  {
748
746
  const _1 = variantIndex_;
749
747
  {
750
- if(_1 == 0) {
748
+ if(_1 === 0) {
751
749
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 30), 0);
752
750
  return ff_compiler_LspHook.SymbolHook(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_), ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.deserializeUsing_(serialization_), ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.deserializeUsing_(serialization_))
753
751
  return
@@ -782,7 +780,7 @@ serialization_.offset_ += 1;
782
780
  {
783
781
  const _1 = variantIndex_;
784
782
  {
785
- if(_1 == 0) {
783
+ if(_1 === 0) {
786
784
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 30), 0);
787
785
  return ff_compiler_LspHook.SymbolHook(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_), ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.deserializeUsing_(serialization_), ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.deserializeUsing_(serialization_))
788
786
  return
@@ -102,8 +102,6 @@ import * as ff_core_Show from "../../ff/core/Show.mjs"
102
102
 
103
103
  import * as ff_core_SourceLocation from "../../ff/core/SourceLocation.mjs"
104
104
 
105
- import * as ff_core_Stack from "../../ff/core/Stack.mjs"
106
-
107
105
  import * as ff_core_Stream from "../../ff/core/Stream.mjs"
108
106
 
109
107
  import * as ff_core_String from "../../ff/core/String.mjs"
@@ -224,7 +222,7 @@ const localMainFile_ = ff_core_Path.Path_base(ff_core_NodeSystem.NodeSystem_path
224
222
  buildScript_(localMainFile_, resolvedDependencies_.mainPackagePair_, ff_compiler_JsEmitter.EmitBuild(), resolvedDependencies_);
225
223
  buildScript_(localMainFile_, resolvedDependencies_.mainPackagePair_, ff_compiler_JsEmitter.EmitExecutable(), resolvedDependencies_);
226
224
  ff_compiler_Main.bundleForPkg_(system_, resolvedDependencies_.mainPackagePair_, localMainFile_);
227
- ff_compiler_Main.importAndRun_(fireflyPath_, "build", resolvedDependencies_.mainPackagePair_, localMainFile_, ff_core_List.Empty())
225
+ ff_compiler_Main.importAndRun_(fireflyPath_, "build", resolvedDependencies_.mainPackagePair_, localMainFile_, [])
228
226
  return
229
227
  }
230
228
  }
@@ -238,14 +236,14 @@ return
238
236
  {
239
237
  if(command_a.BootstrapCommand) {
240
238
  const workingDirectory_ = ff_core_NodeSystem.NodeSystem_path(system_, ".");
241
- ff_compiler_Builder.build_(system_, ff_compiler_JsEmitter.EmitNode(), ff_compiler_Syntax.PackagePair("ff", "compiler"), "Main", ff_compiler_Dependencies.ResolvedDependencies(ff_compiler_Syntax.PackagePair("ff", "compiler"), ff_core_List.List_toMap(ff_core_List.Empty(), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toMap(ff_core_List.Link(ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "compiler"), ff_core_Path.Path_slash(workingDirectory_, "compiler")), ff_core_List.Link(ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "core"), ff_core_Path.Path_slash(workingDirectory_, "core")), ff_core_List.Empty())), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toSet(ff_core_List.Empty(), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair)), ff_core_Option.None(), ff_core_Path.Path_slash(ff_core_Path.Path_slash(workingDirectory_, "output"), "temporary"), ff_core_Path.Path_slash(ff_core_Path.Path_slash(workingDirectory_, "output"), "js"), true)
239
+ ff_compiler_Builder.build_(system_, ff_compiler_JsEmitter.EmitNode(), ff_compiler_Syntax.PackagePair("ff", "compiler"), "Main", ff_compiler_Dependencies.ResolvedDependencies(ff_compiler_Syntax.PackagePair("ff", "compiler"), ff_core_List.List_toMap([], ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toMap([ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "compiler"), ff_core_Path.Path_slash(workingDirectory_, "compiler")), ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "core"), ff_core_Path.Path_slash(workingDirectory_, "core"))], ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toSet([], ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair)), ff_core_Option.None(), ff_core_Path.Path_slash(ff_core_Path.Path_slash(workingDirectory_, "output"), "temporary"), ff_core_Path.Path_slash(ff_core_Path.Path_slash(workingDirectory_, "output"), "js"), true)
242
240
  return
243
241
  }
244
242
  }
245
243
  }
246
244
  }
247
245
  ff_core_Try.Try_grab(ff_core_Try.Try_catch(ff_core_Try.Try_catch(ff_core_Core.try_((() => {
248
- const command_ = ff_compiler_Main.parseCommandLine_(ff_core_Array.Array_toList(ff_core_NodeSystem.NodeSystem_arguments(system_)));
246
+ const command_ = ff_compiler_Main.parseCommandLine_(ff_core_NodeSystem.NodeSystem_arguments(system_));
249
247
  return runCommand_(command_)
250
248
  })), ((_1, _2) => {
251
249
  {
@@ -270,9 +268,9 @@ export function parseCommandLine_(arguments_) {
270
268
  {
271
269
  const arguments_a = arguments_;
272
270
  {
273
- if(arguments_a.Link) {
274
- const mainFile_ = arguments_a.head_;
275
- const mainArguments_ = arguments_a.tail_;
271
+ if(arguments_a.length > 0) {
272
+ const mainFile_ = arguments_a[0];
273
+ const mainArguments_ = arguments_a.slice(1);
276
274
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
277
275
  if(_guard1.Some) {
278
276
  const mainName_ = _guard1.value_;
@@ -282,15 +280,15 @@ return
282
280
  }
283
281
  }
284
282
  {
285
- if(arguments_a.Link) {
286
- if(arguments_a.head_ == "run") {
287
- const runArguments_ = arguments_a.tail_;
283
+ if(arguments_a.length > 0) {
284
+ if(arguments_a[0] === "run") {
285
+ const runArguments_ = arguments_a.slice(1);
288
286
  {
289
287
  const _1 = runArguments_;
290
288
  {
291
- if(_1.Link) {
292
- const mainFile_ = _1.head_;
293
- const mainArguments_ = _1.tail_;
289
+ if(_1.length > 0) {
290
+ const mainFile_ = _1[0];
291
+ const mainArguments_ = _1.slice(1);
294
292
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
295
293
  if(_guard1.Some) {
296
294
  const mainName_ = _guard1.value_;
@@ -309,15 +307,15 @@ return
309
307
  }
310
308
  }
311
309
  {
312
- if(arguments_a.Link) {
313
- if(arguments_a.head_ == "browser") {
314
- const browserArguments_ = arguments_a.tail_;
310
+ if(arguments_a.length > 0) {
311
+ if(arguments_a[0] === "browser") {
312
+ const browserArguments_ = arguments_a.slice(1);
315
313
  {
316
314
  const _1 = browserArguments_;
317
315
  {
318
- if(_1.Link) {
319
- const mainFile_ = _1.head_;
320
- if(_1.tail_.Empty) {
316
+ if(_1.length > 0) {
317
+ const mainFile_ = _1[0];
318
+ if(_1.length === 1) {
321
319
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
322
320
  if(_guard1.Some) {
323
321
  const mainName_ = _guard1.value_;
@@ -328,8 +326,8 @@ return
328
326
  }
329
327
  }
330
328
  {
331
- if(_1.Link) {
332
- if(_1.tail_.Link) {
329
+ if(_1.length > 0) {
330
+ if(_1.length > 1) {
333
331
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must only specify a single argument to browser." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
334
332
  return
335
333
  }
@@ -345,15 +343,15 @@ return
345
343
  }
346
344
  }
347
345
  {
348
- if(arguments_a.Link) {
349
- if(arguments_a.head_ == "build") {
350
- const buildArguments_ = arguments_a.tail_;
346
+ if(arguments_a.length > 0) {
347
+ if(arguments_a[0] === "build") {
348
+ const buildArguments_ = arguments_a.slice(1);
351
349
  {
352
350
  const _1 = buildArguments_;
353
351
  {
354
- if(_1.Link) {
355
- const mainFile_ = _1.head_;
356
- if(_1.tail_.Empty) {
352
+ if(_1.length > 0) {
353
+ const mainFile_ = _1[0];
354
+ if(_1.length === 1) {
357
355
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
358
356
  if(_guard1.Some) {
359
357
  const mainName_ = _guard1.value_;
@@ -364,8 +362,8 @@ return
364
362
  }
365
363
  }
366
364
  {
367
- if(_1.Link) {
368
- if(_1.tail_.Link) {
365
+ if(_1.length > 0) {
366
+ if(_1.length > 1) {
369
367
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must only specify a single argument to build." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
370
368
  return
371
369
  }
@@ -381,15 +379,15 @@ return
381
379
  }
382
380
  }
383
381
  {
384
- if(arguments_a.Link) {
385
- if(arguments_a.head_ == "check") {
386
- const checkArguments_ = arguments_a.tail_;
382
+ if(arguments_a.length > 0) {
383
+ if(arguments_a[0] === "check") {
384
+ const checkArguments_ = arguments_a.slice(1);
387
385
  {
388
386
  const _1 = checkArguments_;
389
387
  {
390
- if(_1.Link) {
391
- const fileName_ = _1.head_;
392
- if(_1.tail_.Empty) {
388
+ if(_1.length > 0) {
389
+ const fileName_ = _1[0];
390
+ if(_1.length === 1) {
393
391
  const _guard1 = ff_core_String.String_removeLast(fileName_, ".ff");
394
392
  if(_guard1.Some) {
395
393
  return ff_compiler_Main.CheckCommand(fileName_)
@@ -399,8 +397,8 @@ return
399
397
  }
400
398
  }
401
399
  {
402
- if(_1.Link) {
403
- if(_1.tail_.Link) {
400
+ if(_1.length > 0) {
401
+ if(_1.length > 1) {
404
402
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must only specify a single argument to check." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
405
403
  return
406
404
  }
@@ -416,10 +414,10 @@ return
416
414
  }
417
415
  }
418
416
  {
419
- if(arguments_a.Link) {
420
- if(arguments_a.head_ == "bootstrap") {
421
- if(arguments_a.tail_.Link) {
422
- if(arguments_a.tail_.tail_.Empty) {
417
+ if(arguments_a.length > 0) {
418
+ if(arguments_a[0] === "bootstrap") {
419
+ if(arguments_a.length > 1) {
420
+ if(arguments_a.length === 2) {
423
421
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("bootstrap takes no arguments" + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
424
422
  return
425
423
  }
@@ -428,9 +426,9 @@ return
428
426
  }
429
427
  }
430
428
  {
431
- if(arguments_a.Link) {
432
- if(arguments_a.head_ == "bootstrap") {
433
- if(arguments_a.tail_.Empty) {
429
+ if(arguments_a.length > 0) {
430
+ if(arguments_a[0] === "bootstrap") {
431
+ if(arguments_a.length === 1) {
434
432
  return ff_compiler_Main.BootstrapCommand()
435
433
  return
436
434
  }
@@ -438,14 +436,14 @@ return
438
436
  }
439
437
  }
440
438
  {
441
- if(arguments_a.Empty) {
439
+ if(arguments_a.length === 0) {
442
440
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must specify a command or a main file to run." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
443
441
  return
444
442
  }
445
443
  }
446
444
  {
447
- if(arguments_a.Link) {
448
- const s_ = arguments_a.head_;
445
+ if(arguments_a.length > 0) {
446
+ const s_ = arguments_a[0];
449
447
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(((("Unknown command '" + s_) + "'") + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
450
448
  return
451
449
  }
@@ -464,9 +462,9 @@ export function bundleForBrowser_(system_, packagePair_, mainFile_) {
464
462
  const prefix_ = ".firefly/output/browser/";
465
463
  const mainJsFile_ = ((((prefix_ + ff_compiler_Syntax.PackagePair_groupName(packagePair_, "/")) + "/") + mainFile_) + ".mjs");
466
464
  const file_ = (prefix_ + "Main.bundle.js");
467
- const browserCode_ = ff_core_BuildSystem.BrowserCode(packagePair_.group_, packagePair_.name_, ff_core_NodeSystem.NodeSystem_path(system_, mainFile_), ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap(ff_core_List.Link(ff_core_Pair.Pair("/", (() => {
465
+ const browserCode_ = ff_core_BuildSystem.BrowserCode(packagePair_.group_, packagePair_.name_, ff_core_NodeSystem.NodeSystem_path(system_, mainFile_), ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap([ff_core_Pair.Pair("/", (() => {
468
466
  return ff_core_Path.Path_readStream(ff_core_NodeSystem.NodeSystem_path(system_, "."))
469
- })), ff_core_List.Empty()), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)));
467
+ }))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)));
470
468
  ff_core_BuildSystem.internalCallEsBuild_(browserCode_, mainJsFile_, file_, true, true)
471
469
  }
472
470
 
@@ -561,7 +559,7 @@ const localMainFile_ = (await ff_core_Path.Path_base$((await ff_core_NodeSystem.
561
559
  (await buildScript_$(localMainFile_, resolvedDependencies_.mainPackagePair_, ff_compiler_JsEmitter.EmitBuild(), resolvedDependencies_, $task));
562
560
  (await buildScript_$(localMainFile_, resolvedDependencies_.mainPackagePair_, ff_compiler_JsEmitter.EmitExecutable(), resolvedDependencies_, $task));
563
561
  (await ff_compiler_Main.bundleForPkg_$(system_, resolvedDependencies_.mainPackagePair_, localMainFile_, $task));
564
- (await ff_compiler_Main.importAndRun_$(fireflyPath_, "build", resolvedDependencies_.mainPackagePair_, localMainFile_, ff_core_List.Empty(), $task))
562
+ (await ff_compiler_Main.importAndRun_$(fireflyPath_, "build", resolvedDependencies_.mainPackagePair_, localMainFile_, [], $task))
565
563
  return
566
564
  }
567
565
  }
@@ -575,14 +573,14 @@ return
575
573
  {
576
574
  if(command_a.BootstrapCommand) {
577
575
  const workingDirectory_ = (await ff_core_NodeSystem.NodeSystem_path$(system_, ".", $task));
578
- (await ff_compiler_Builder.build_$(system_, ff_compiler_JsEmitter.EmitNode(), ff_compiler_Syntax.PackagePair("ff", "compiler"), "Main", ff_compiler_Dependencies.ResolvedDependencies(ff_compiler_Syntax.PackagePair("ff", "compiler"), ff_core_List.List_toMap(ff_core_List.Empty(), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toMap(ff_core_List.Link(ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "compiler"), (await ff_core_Path.Path_slash$(workingDirectory_, "compiler", $task))), ff_core_List.Link(ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "core"), (await ff_core_Path.Path_slash$(workingDirectory_, "core", $task))), ff_core_List.Empty())), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toSet(ff_core_List.Empty(), ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair)), ff_core_Option.None(), (await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$(workingDirectory_, "output", $task)), "temporary", $task)), (await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$(workingDirectory_, "output", $task)), "js", $task)), true, $task))
576
+ (await ff_compiler_Builder.build_$(system_, ff_compiler_JsEmitter.EmitNode(), ff_compiler_Syntax.PackagePair("ff", "compiler"), "Main", ff_compiler_Dependencies.ResolvedDependencies(ff_compiler_Syntax.PackagePair("ff", "compiler"), ff_core_List.List_toMap([], ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toMap([ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "compiler"), (await ff_core_Path.Path_slash$(workingDirectory_, "compiler", $task))), ff_core_Pair.Pair(ff_compiler_Syntax.PackagePair("ff", "core"), (await ff_core_Path.Path_slash$(workingDirectory_, "core", $task)))], ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair), ff_core_List.List_toSet([], ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_PackagePair)), ff_core_Option.None(), (await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$(workingDirectory_, "output", $task)), "temporary", $task)), (await ff_core_Path.Path_slash$((await ff_core_Path.Path_slash$(workingDirectory_, "output", $task)), "js", $task)), true, $task))
579
577
  return
580
578
  }
581
579
  }
582
580
  }
583
581
  }
584
582
  ff_core_Try.Try_grab(ff_core_Try.Try_catch(ff_core_Try.Try_catch((await ff_core_Core.try_$((async ($task) => {
585
- const command_ = ff_compiler_Main.parseCommandLine_(ff_core_Array.Array_toList((await ff_core_NodeSystem.NodeSystem_arguments$(system_, $task))));
583
+ const command_ = ff_compiler_Main.parseCommandLine_((await ff_core_NodeSystem.NodeSystem_arguments$(system_, $task)));
586
584
  return (await runCommand_$(command_, $task))
587
585
  }), $task)), ((_1, _2) => {
588
586
  {
@@ -607,9 +605,9 @@ export async function parseCommandLine_$(arguments_, $task) {
607
605
  {
608
606
  const arguments_a = arguments_;
609
607
  {
610
- if(arguments_a.Link) {
611
- const mainFile_ = arguments_a.head_;
612
- const mainArguments_ = arguments_a.tail_;
608
+ if(arguments_a.length > 0) {
609
+ const mainFile_ = arguments_a[0];
610
+ const mainArguments_ = arguments_a.slice(1);
613
611
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
614
612
  if(_guard1.Some) {
615
613
  const mainName_ = _guard1.value_;
@@ -619,15 +617,15 @@ return
619
617
  }
620
618
  }
621
619
  {
622
- if(arguments_a.Link) {
623
- if(arguments_a.head_ == "run") {
624
- const runArguments_ = arguments_a.tail_;
620
+ if(arguments_a.length > 0) {
621
+ if(arguments_a[0] === "run") {
622
+ const runArguments_ = arguments_a.slice(1);
625
623
  {
626
624
  const _1 = runArguments_;
627
625
  {
628
- if(_1.Link) {
629
- const mainFile_ = _1.head_;
630
- const mainArguments_ = _1.tail_;
626
+ if(_1.length > 0) {
627
+ const mainFile_ = _1[0];
628
+ const mainArguments_ = _1.slice(1);
631
629
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
632
630
  if(_guard1.Some) {
633
631
  const mainName_ = _guard1.value_;
@@ -646,15 +644,15 @@ return
646
644
  }
647
645
  }
648
646
  {
649
- if(arguments_a.Link) {
650
- if(arguments_a.head_ == "browser") {
651
- const browserArguments_ = arguments_a.tail_;
647
+ if(arguments_a.length > 0) {
648
+ if(arguments_a[0] === "browser") {
649
+ const browserArguments_ = arguments_a.slice(1);
652
650
  {
653
651
  const _1 = browserArguments_;
654
652
  {
655
- if(_1.Link) {
656
- const mainFile_ = _1.head_;
657
- if(_1.tail_.Empty) {
653
+ if(_1.length > 0) {
654
+ const mainFile_ = _1[0];
655
+ if(_1.length === 1) {
658
656
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
659
657
  if(_guard1.Some) {
660
658
  const mainName_ = _guard1.value_;
@@ -665,8 +663,8 @@ return
665
663
  }
666
664
  }
667
665
  {
668
- if(_1.Link) {
669
- if(_1.tail_.Link) {
666
+ if(_1.length > 0) {
667
+ if(_1.length > 1) {
670
668
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must only specify a single argument to browser." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
671
669
  return
672
670
  }
@@ -682,15 +680,15 @@ return
682
680
  }
683
681
  }
684
682
  {
685
- if(arguments_a.Link) {
686
- if(arguments_a.head_ == "build") {
687
- const buildArguments_ = arguments_a.tail_;
683
+ if(arguments_a.length > 0) {
684
+ if(arguments_a[0] === "build") {
685
+ const buildArguments_ = arguments_a.slice(1);
688
686
  {
689
687
  const _1 = buildArguments_;
690
688
  {
691
- if(_1.Link) {
692
- const mainFile_ = _1.head_;
693
- if(_1.tail_.Empty) {
689
+ if(_1.length > 0) {
690
+ const mainFile_ = _1[0];
691
+ if(_1.length === 1) {
694
692
  const _guard1 = ff_core_String.String_removeLast(mainFile_, ".ff");
695
693
  if(_guard1.Some) {
696
694
  const mainName_ = _guard1.value_;
@@ -701,8 +699,8 @@ return
701
699
  }
702
700
  }
703
701
  {
704
- if(_1.Link) {
705
- if(_1.tail_.Link) {
702
+ if(_1.length > 0) {
703
+ if(_1.length > 1) {
706
704
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must only specify a single argument to build." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
707
705
  return
708
706
  }
@@ -718,15 +716,15 @@ return
718
716
  }
719
717
  }
720
718
  {
721
- if(arguments_a.Link) {
722
- if(arguments_a.head_ == "check") {
723
- const checkArguments_ = arguments_a.tail_;
719
+ if(arguments_a.length > 0) {
720
+ if(arguments_a[0] === "check") {
721
+ const checkArguments_ = arguments_a.slice(1);
724
722
  {
725
723
  const _1 = checkArguments_;
726
724
  {
727
- if(_1.Link) {
728
- const fileName_ = _1.head_;
729
- if(_1.tail_.Empty) {
725
+ if(_1.length > 0) {
726
+ const fileName_ = _1[0];
727
+ if(_1.length === 1) {
730
728
  const _guard1 = ff_core_String.String_removeLast(fileName_, ".ff");
731
729
  if(_guard1.Some) {
732
730
  return ff_compiler_Main.CheckCommand(fileName_)
@@ -736,8 +734,8 @@ return
736
734
  }
737
735
  }
738
736
  {
739
- if(_1.Link) {
740
- if(_1.tail_.Link) {
737
+ if(_1.length > 0) {
738
+ if(_1.length > 1) {
741
739
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must only specify a single argument to check." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
742
740
  return
743
741
  }
@@ -753,10 +751,10 @@ return
753
751
  }
754
752
  }
755
753
  {
756
- if(arguments_a.Link) {
757
- if(arguments_a.head_ == "bootstrap") {
758
- if(arguments_a.tail_.Link) {
759
- if(arguments_a.tail_.tail_.Empty) {
754
+ if(arguments_a.length > 0) {
755
+ if(arguments_a[0] === "bootstrap") {
756
+ if(arguments_a.length > 1) {
757
+ if(arguments_a.length === 2) {
760
758
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("bootstrap takes no arguments" + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
761
759
  return
762
760
  }
@@ -765,9 +763,9 @@ return
765
763
  }
766
764
  }
767
765
  {
768
- if(arguments_a.Link) {
769
- if(arguments_a.head_ == "bootstrap") {
770
- if(arguments_a.tail_.Empty) {
766
+ if(arguments_a.length > 0) {
767
+ if(arguments_a[0] === "bootstrap") {
768
+ if(arguments_a.length === 1) {
771
769
  return ff_compiler_Main.BootstrapCommand()
772
770
  return
773
771
  }
@@ -775,14 +773,14 @@ return
775
773
  }
776
774
  }
777
775
  {
778
- if(arguments_a.Empty) {
776
+ if(arguments_a.length === 0) {
779
777
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(("You must specify a command or a main file to run." + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
780
778
  return
781
779
  }
782
780
  }
783
781
  {
784
- if(arguments_a.Link) {
785
- const s_ = arguments_a.head_;
782
+ if(arguments_a.length > 0) {
783
+ const s_ = arguments_a[0];
786
784
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Main.CommandLineError(((("Unknown command '" + s_) + "'") + ff_compiler_Main.usageString_)), ff_compiler_Main.ff_core_Any_HasAnyTag$ff_compiler_Main_CommandLineError)})
787
785
  return
788
786
  }
@@ -801,9 +799,9 @@ export async function bundleForBrowser_$(system_, packagePair_, mainFile_, $task
801
799
  const prefix_ = ".firefly/output/browser/";
802
800
  const mainJsFile_ = ((((prefix_ + ff_compiler_Syntax.PackagePair_groupName(packagePair_, "/")) + "/") + mainFile_) + ".mjs");
803
801
  const file_ = (prefix_ + "Main.bundle.js");
804
- const browserCode_ = ff_core_BuildSystem.BrowserCode(packagePair_.group_, packagePair_.name_, (await ff_core_NodeSystem.NodeSystem_path$(system_, mainFile_, $task)), ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap(ff_core_List.Link(ff_core_Pair.Pair("/", (async ($task) => {
802
+ const browserCode_ = ff_core_BuildSystem.BrowserCode(packagePair_.group_, packagePair_.name_, (await ff_core_NodeSystem.NodeSystem_path$(system_, mainFile_, $task)), ff_core_AssetSystem.AssetSystem(ff_core_List.List_toMap([ff_core_Pair.Pair("/", (async ($task) => {
805
803
  return (await ff_core_Path.Path_readStream$((await ff_core_NodeSystem.NodeSystem_path$(system_, ".", $task)), $task))
806
- })), ff_core_List.Empty()), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)));
804
+ }))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)));
807
805
  (await ff_core_BuildSystem.internalCallEsBuild_$(browserCode_, mainJsFile_, file_, true, true, $task))
808
806
  }
809
807
 
@@ -814,7 +812,7 @@ export async function importAndRun_$(fireflyPath_, target_, packagePair_, mainFi
814
812
  const workingDirectory = cwd.indexOf(':') == 1 ? 'file:///' + cwd : cwd;
815
813
  const packagePath = packagePair_.group_ + "/" + packagePair_.name_
816
814
  const main = await import(workingDirectory + "/.firefly/output/" + target_ + "/" + packagePath + "/" + mainFile_ + ".mjs");
817
- await main.$run$(fireflyPath_, ff_core_List.List_toArray(arguments_))
815
+ await main.$run$(fireflyPath_, arguments_)
818
816
 
819
817
  }
820
818
 
@@ -1471,35 +1469,35 @@ serialization_.offset_ += 1;
1471
1469
  {
1472
1470
  const _1 = variantIndex_;
1473
1471
  {
1474
- if(_1 == 0) {
1472
+ if(_1 === 0) {
1475
1473
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
1476
1474
  return ff_compiler_Main.BootstrapCommand()
1477
1475
  return
1478
1476
  }
1479
1477
  }
1480
1478
  {
1481
- if(_1 == 1) {
1479
+ if(_1 === 1) {
1482
1480
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 27), 0);
1483
1481
  return ff_compiler_Main.RunCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_), ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
1484
1482
  return
1485
1483
  }
1486
1484
  }
1487
1485
  {
1488
- if(_1 == 2) {
1486
+ if(_1 === 2) {
1489
1487
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 31), 0);
1490
1488
  return ff_compiler_Main.BrowserCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1491
1489
  return
1492
1490
  }
1493
1491
  }
1494
1492
  {
1495
- if(_1 == 3) {
1493
+ if(_1 === 3) {
1496
1494
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 29), 0);
1497
1495
  return ff_compiler_Main.BuildCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1498
1496
  return
1499
1497
  }
1500
1498
  }
1501
1499
  {
1502
- if(_1 == 4) {
1500
+ if(_1 === 4) {
1503
1501
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 29), 0);
1504
1502
  return ff_compiler_Main.CheckCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1505
1503
  return
@@ -1578,35 +1576,35 @@ serialization_.offset_ += 1;
1578
1576
  {
1579
1577
  const _1 = variantIndex_;
1580
1578
  {
1581
- if(_1 == 0) {
1579
+ if(_1 === 0) {
1582
1580
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
1583
1581
  return ff_compiler_Main.BootstrapCommand()
1584
1582
  return
1585
1583
  }
1586
1584
  }
1587
1585
  {
1588
- if(_1 == 1) {
1586
+ if(_1 === 1) {
1589
1587
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 27), 0);
1590
1588
  return ff_compiler_Main.RunCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_), ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
1591
1589
  return
1592
1590
  }
1593
1591
  }
1594
1592
  {
1595
- if(_1 == 2) {
1593
+ if(_1 === 2) {
1596
1594
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 31), 0);
1597
1595
  return ff_compiler_Main.BrowserCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1598
1596
  return
1599
1597
  }
1600
1598
  }
1601
1599
  {
1602
- if(_1 == 3) {
1600
+ if(_1 === 3) {
1603
1601
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 29), 0);
1604
1602
  return ff_compiler_Main.BuildCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1605
1603
  return
1606
1604
  }
1607
1605
  }
1608
1606
  {
1609
- if(_1 == 4) {
1607
+ if(_1 === 4) {
1610
1608
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 29), 0);
1611
1609
  return ff_compiler_Main.CheckCommand(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1612
1610
  return
@@ -1642,7 +1640,7 @@ serialization_.offset_ += 1;
1642
1640
  {
1643
1641
  const _1 = variantIndex_;
1644
1642
  {
1645
- if(_1 == 0) {
1643
+ if(_1 === 0) {
1646
1644
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
1647
1645
  return ff_compiler_Main.CommandLineError(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1648
1646
  return
@@ -1675,7 +1673,7 @@ serialization_.offset_ += 1;
1675
1673
  {
1676
1674
  const _1 = variantIndex_;
1677
1675
  {
1678
- if(_1 == 0) {
1676
+ if(_1 === 0) {
1679
1677
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
1680
1678
  return ff_compiler_Main.CommandLineError(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_))
1681
1679
  return