firefly-compiler 0.4.19 → 0.4.21

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 (68) hide show
  1. package/compiler/Builder.ff +23 -13
  2. package/compiler/JsEmitter.ff +120 -76
  3. package/compiler/LspHook.ff +17 -3
  4. package/compiler/Main.ff +13 -7
  5. package/compiler/Parser.ff +11 -13
  6. package/compiler/Resolver.ff +15 -15
  7. package/compiler/Syntax.ff +1 -0
  8. package/core/Array.ff +6 -4
  9. package/core/Int.ff +12 -12
  10. package/core/Json.ff +2 -2
  11. package/core/List.ff +6 -4
  12. package/experimental/benchmarks/ListGrab.ff +23 -0
  13. package/experimental/benchmarks/ListGrab.java +55 -0
  14. package/experimental/benchmarks/Pyrotek45.ff +30 -0
  15. package/experimental/benchmarks/Pyrotek45.java +64 -0
  16. package/experimental/tests/TestJson.ff +26 -0
  17. package/lsp/CompletionHandler.ff +14 -14
  18. package/lsp/Handler.ff +56 -60
  19. package/lsp/SignatureHelpHandler.ff +5 -4
  20. package/lsp/SymbolHandler.ff +18 -4
  21. package/lsp/TestReferences.ff +15 -0
  22. package/lsp/TestReferencesCase.ff +8 -0
  23. package/output/js/ff/compiler/Builder.mjs +50 -44
  24. package/output/js/ff/compiler/Dependencies.mjs +0 -2
  25. package/output/js/ff/compiler/Deriver.mjs +16 -140
  26. package/output/js/ff/compiler/Dictionaries.mjs +8 -222
  27. package/output/js/ff/compiler/Environment.mjs +12 -154
  28. package/output/js/ff/compiler/Inference.mjs +127 -1013
  29. package/output/js/ff/compiler/JsEmitter.mjs +434 -2344
  30. package/output/js/ff/compiler/JsImporter.mjs +0 -12
  31. package/output/js/ff/compiler/LspHook.mjs +548 -151
  32. package/output/js/ff/compiler/Main.mjs +96 -550
  33. package/output/js/ff/compiler/Parser.mjs +58 -390
  34. package/output/js/ff/compiler/Patterns.mjs +20 -200
  35. package/output/js/ff/compiler/Resolver.mjs +26 -340
  36. package/output/js/ff/compiler/Substitution.mjs +2 -160
  37. package/output/js/ff/compiler/Syntax.mjs +449 -3293
  38. package/output/js/ff/compiler/Token.mjs +9 -1095
  39. package/output/js/ff/compiler/Tokenizer.mjs +4 -2
  40. package/output/js/ff/compiler/Unification.mjs +26 -360
  41. package/output/js/ff/compiler/Wildcards.mjs +0 -86
  42. package/output/js/ff/compiler/Workspace.mjs +8 -96
  43. package/output/js/ff/core/Array.mjs +15 -8
  44. package/output/js/ff/core/AssetSystem.mjs +4 -14
  45. package/output/js/ff/core/Bool.mjs +0 -12
  46. package/output/js/ff/core/Core.mjs +0 -30
  47. package/output/js/ff/core/Int.mjs +24 -24
  48. package/output/js/ff/core/IntMap.mjs +0 -8
  49. package/output/js/ff/core/Json.mjs +2 -42
  50. package/output/js/ff/core/List.mjs +23 -32
  51. package/output/js/ff/core/Lock.mjs +0 -10
  52. package/output/js/ff/core/Map.mjs +0 -24
  53. package/output/js/ff/core/Option.mjs +10 -286
  54. package/output/js/ff/core/Ordering.mjs +16 -158
  55. package/output/js/ff/core/Pair.mjs +2 -34
  56. package/output/js/ff/core/Path.mjs +2 -28
  57. package/output/js/ff/core/Random.mjs +4 -4
  58. package/output/js/ff/core/RbMap.mjs +56 -644
  59. package/output/js/ff/core/Show.mjs +0 -16
  60. package/output/js/ff/core/Stream.mjs +14 -144
  61. package/output/js/ff/core/StringMap.mjs +0 -8
  62. package/output/js/ff/core/Try.mjs +4 -108
  63. package/output/js/ff/core/Unit.mjs +2 -16
  64. package/package.json +1 -1
  65. package/postgresql/Pg.ff +23 -23
  66. package/vscode/client/src/extension.ts +30 -2
  67. package/vscode/package.json +17 -1
  68. package/core/Stack.ff +0 -250
@@ -143,12 +143,7 @@ return ff_compiler_Syntax.ForeignTarget(sync_, async_)
143
143
  })());
144
144
  {
145
145
  const _1 = foreignTarget_;
146
- {
147
- if(_1.ForeignTarget) {
148
- if(_1.syncCode_.None) {
149
- if(_1.asyncCode_.None) {
150
- const _guard1 = targetIsNode_;
151
- if(_guard1) {
146
+ if(_1.ForeignTarget && _1.syncCode_.None && _1.asyncCode_.None && targetIsNode_) {
152
147
  return ff_core_Option.Option_else(ff_core_Option.Option_map(ff_core_Option.Option_orElse(targets_.node_, (() => {
153
148
  return ff_core_Option.Option_orElse(targets_.js_, (() => {
154
149
  return body_
@@ -160,16 +155,7 @@ return foreignTarget_
160
155
  }))
161
156
  return
162
157
  }
163
- }
164
- }
165
- }
166
- }
167
- {
168
- if(_1.ForeignTarget) {
169
- if(_1.syncCode_.None) {
170
- if(_1.asyncCode_.None) {
171
- const _guard1 = (!targetIsNode_);
172
- if(_guard1) {
158
+ if(_1.ForeignTarget && _1.syncCode_.None && _1.asyncCode_.None && (!targetIsNode_)) {
173
159
  return ff_core_Option.Option_else(ff_core_Option.Option_map(ff_core_Option.Option_orElse(targets_.browser_, (() => {
174
160
  return ff_core_Option.Option_orElse(targets_.js_, (() => {
175
161
  return body_
@@ -181,13 +167,8 @@ return foreignTarget_
181
167
  }))
182
168
  return
183
169
  }
184
- }
185
- }
186
- }
187
- }
188
170
  {
189
171
  return foreignTarget_
190
- return
191
172
  }
192
173
  }
193
174
  }
@@ -218,12 +199,7 @@ return ff_compiler_Syntax.ForeignTarget(sync_, async_)
218
199
  })()));
219
200
  {
220
201
  const _1 = foreignTarget_;
221
- {
222
- if(_1.ForeignTarget) {
223
- if(_1.syncCode_.None) {
224
- if(_1.asyncCode_.None) {
225
- const _guard1 = targetIsNode_;
226
- if(_guard1) {
202
+ if(_1.ForeignTarget && _1.syncCode_.None && _1.asyncCode_.None && targetIsNode_) {
227
203
  return ff_core_Option.Option_else(ff_core_Option.Option_map(ff_core_Option.Option_orElse(targets_.node_, (() => {
228
204
  return ff_core_Option.Option_orElse(targets_.js_, (() => {
229
205
  return body_
@@ -235,16 +211,7 @@ return foreignTarget_
235
211
  }))
236
212
  return
237
213
  }
238
- }
239
- }
240
- }
241
- }
242
- {
243
- if(_1.ForeignTarget) {
244
- if(_1.syncCode_.None) {
245
- if(_1.asyncCode_.None) {
246
- const _guard1 = (!targetIsNode_);
247
- if(_guard1) {
214
+ if(_1.ForeignTarget && _1.syncCode_.None && _1.asyncCode_.None && (!targetIsNode_)) {
248
215
  return ff_core_Option.Option_else(ff_core_Option.Option_map(ff_core_Option.Option_orElse(targets_.browser_, (() => {
249
216
  return ff_core_Option.Option_orElse(targets_.js_, (() => {
250
217
  return body_
@@ -256,13 +223,8 @@ return foreignTarget_
256
223
  }))
257
224
  return
258
225
  }
259
- }
260
- }
261
- }
262
- }
263
226
  {
264
227
  return foreignTarget_
265
- return
266
228
  }
267
229
  }
268
230
  }
@@ -459,7 +421,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
459
421
  const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
460
422
  const retult_ = ff_compiler_Syntax.DLet(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), variableType_, value_);
461
423
  if(self_.lspHook_.trackSymbols_) {
462
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), 14, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
424
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(false), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
463
425
  };
464
426
  return retult_
465
427
  }
@@ -476,10 +438,7 @@ const targets_ = ff_compiler_Parser.Parser_parseTargets(self_, ff_core_List.List
476
438
  const bestTarget_ = ff_compiler_Parser.findBestTarget_(self_.targetIsNode_, body_, targets_);
477
439
  const result_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, bestTarget_);
478
440
  if(self_.lspHook_.trackSymbols_) {
479
- const kind_ = (member_
480
- ? 6
481
- : 12);
482
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, kind_, signature_.at_, (((_c) => {
441
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(member_), signature_.at_, (((_c) => {
483
442
  return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
484
443
  }))(signature_.at_), signature_.at_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
485
444
  };
@@ -504,7 +463,6 @@ if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{"))
504
463
  const lambda_ = ff_compiler_Parser.Parser_parseLambda(self_, parameterCount_, false, false);
505
464
  do {
506
465
  const _1 = target_;
507
- {
508
466
  if(_1 === "js") {
509
467
  if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
510
468
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
@@ -514,8 +472,6 @@ return ff_compiler_Parser.ParsedTargets(ff_core_Option.Some(lambda_), _c.jsSync_
514
472
  }))(targets_)
515
473
  break
516
474
  }
517
- }
518
- {
519
475
  if(_1 === "browser") {
520
476
  if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
521
477
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
@@ -525,8 +481,6 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, ff_core
525
481
  }))(targets_)
526
482
  break
527
483
  }
528
- }
529
- {
530
484
  if(_1 === "node") {
531
485
  if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
532
486
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
@@ -536,10 +490,8 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
536
490
  }))(targets_)
537
491
  break
538
492
  }
539
- }
540
493
  {
541
494
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Unknown target"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
542
- break
543
495
  }
544
496
  } while(false)
545
497
  } else {
@@ -547,9 +499,7 @@ const mode_ = ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_skip(self_,
547
499
  const code_ = processCode_(ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LString())));
548
500
  do {
549
501
  const _1 = ff_core_Pair.Pair(target_, mode_);
550
- {
551
- if(_1.first_ === "js") {
552
- if(_1.second_ === "sync") {
502
+ if(_1.first_ === "js" && _1.second_ === "sync") {
553
503
  if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
554
504
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
555
505
  };
@@ -558,11 +508,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, ff_core_Option.Some(code_), _c.j
558
508
  }))(targets_)
559
509
  break
560
510
  }
561
- }
562
- }
563
- {
564
- if(_1.first_ === "js") {
565
- if(_1.second_ === "async") {
511
+ if(_1.first_ === "js" && _1.second_ === "async") {
566
512
  if(ff_core_Equal.notEquals_(targets_.jsAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
567
513
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
568
514
  };
@@ -571,11 +517,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, ff_core_Option.Some(
571
517
  }))(targets_)
572
518
  break
573
519
  }
574
- }
575
- }
576
- {
577
- if(_1.first_ === "browser") {
578
- if(_1.second_ === "sync") {
520
+ if(_1.first_ === "browser" && _1.second_ === "sync") {
579
521
  if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
580
522
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
581
523
  };
@@ -584,11 +526,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
584
526
  }))(targets_)
585
527
  break
586
528
  }
587
- }
588
- }
589
- {
590
- if(_1.first_ === "browser") {
591
- if(_1.second_ === "async") {
529
+ if(_1.first_ === "browser" && _1.second_ === "async") {
592
530
  if(ff_core_Equal.notEquals_(targets_.browserAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
593
531
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
594
532
  };
@@ -597,11 +535,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
597
535
  }))(targets_)
598
536
  break
599
537
  }
600
- }
601
- }
602
- {
603
- if(_1.first_ === "node") {
604
- if(_1.second_ === "sync") {
538
+ if(_1.first_ === "node" && _1.second_ === "sync") {
605
539
  if(ff_core_Equal.notEquals_(targets_.nodeSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
606
540
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
607
541
  };
@@ -610,11 +544,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
610
544
  }))(targets_)
611
545
  break
612
546
  }
613
- }
614
- }
615
- {
616
- if(_1.first_ === "node") {
617
- if(_1.second_ === "async") {
547
+ if(_1.first_ === "node" && _1.second_ === "async") {
618
548
  if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
619
549
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
620
550
  };
@@ -623,11 +553,8 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
623
553
  }))(targets_)
624
554
  break
625
555
  }
626
- }
627
- }
628
556
  {
629
557
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Unknown target or mode"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
630
- break
631
558
  }
632
559
  } while(false)
633
560
  }
@@ -686,7 +613,7 @@ name_ = ff_core_String.String_replace(name_, ((", " + generic_) + "]"), ((((", "
686
613
  return
687
614
  }
688
615
  }));
689
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, 3, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(extendToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
616
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SExtend(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(extendToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
690
617
  };
691
618
  return ff_compiler_Syntax.DExtend(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), poly_.generics_, poly_.constraints_, type_, ff_core_Array.Array_toList(methods_, 0, 9007199254740991))
692
619
  }
@@ -728,7 +655,7 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
728
655
  const signatureNameToken_ = ff_compiler_Parser.Parser_current(self_);
729
656
  const signature_ = ff_compiler_Parser.Parser_parseSignature(self_, true);
730
657
  if(self_.lspHook_.trackSymbols_) {
731
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_), 12, ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(signatureNameToken_), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
658
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_), ff_compiler_LspHook.STraitFunction(), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(signatureNameToken_), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
732
659
  };
733
660
  ff_core_Array.Array_push(signatures_, signature_);
734
661
  if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
@@ -748,7 +675,7 @@ ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}")
748
675
  return ff_core_Array.Array_toList(signatures_, 0, 9007199254740991)
749
676
  })());
750
677
  if(self_.lspHook_.trackSymbols_) {
751
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), 11, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(traitToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
678
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.STrait(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(traitToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
752
679
  };
753
680
  return ff_compiler_Syntax.DTrait(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), [ff_compiler_Token.Token_raw(typeParameterToken_), ...poly_.generics_], [...ff_core_Array.Array_toList(constraints_, 0, 9007199254740991), ...poly_.constraints_], generatorParameters_, methodSignatures_, ff_core_Array.Array_toList(methodDefaults_, 0, 9007199254740991), ff_core_Array.Array_toList(methodGenerators_, 0, 9007199254740991))
754
681
  }
@@ -795,7 +722,7 @@ return ff_core_Array.Array_toList(definitions_, 0, 9007199254740991)
795
722
  })());
796
723
  if(self_.lspHook_.trackSymbols_) {
797
724
  const name_ = ((ff_compiler_Token.Token_raw(token_) + ": ") + ff_compiler_Token.Token_raw(nameToken_));
798
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, 19, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(instanceToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
725
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SInstance(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(instanceToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
799
726
  };
800
727
  return ff_compiler_Syntax.DInstance(ff_compiler_Token.Token_at(nameToken_), poly_.generics_, poly_.constraints_, ff_compiler_Token.Token_raw(nameToken_), ff_core_Array.Array_toList(typeArguments_, 0, 9007199254740991), generatorArguments_, methods_, false)
801
728
  }
@@ -851,7 +778,7 @@ if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_com
851
778
  ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
852
779
  };
853
780
  if(self_.lspHook_.trackSymbols_) {
854
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_), 10, ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(variantNameToken_), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
781
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_), ff_compiler_LspHook.SVariant(), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(variantNameToken_), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
855
782
  }
856
783
  };
857
784
  ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
@@ -871,7 +798,7 @@ return _w1.mutable_
871
798
  const generics_ = [...effectParameter_, ...poly_.generics_];
872
799
  const result_ = ff_compiler_Syntax.DType(ff_compiler_Token.Token_at(nameToken_), newtype_, (!allowMutable_), ff_compiler_Token.Token_raw(nameToken_), generics_, poly_.constraints_, commonFields_, variants_);
873
800
  if(self_.lspHook_.trackSymbols_) {
874
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), 5, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(kindToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
801
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SType(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(kindToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
875
802
  };
876
803
  return result_
877
804
  }
@@ -943,44 +870,27 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
943
870
  : ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LKeyword()));
944
871
  do {
945
872
  const _1 = ff_compiler_Token.Token_raw(token_);
946
- {
947
- if(_1 === "node") {
948
- const _guard1 = targets_.node_;
949
- if(_guard1) {
873
+ if(_1 === "node" && targets_.node_) {
950
874
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
951
- break
952
875
  }
953
- }
954
- }
955
- {
956
876
  if(_1 === "node") {
957
877
  targets_ = (((_c) => {
958
878
  return ff_compiler_Syntax.TargetNames(true, _c.browser_)
959
879
  }))(targets_)
960
880
  break
961
881
  }
962
- }
963
- {
964
- if(_1 === "browser") {
965
- const _guard1 = targets_.browser_;
966
- if(_guard1) {
882
+ if(_1 === "browser" && targets_.browser_) {
967
883
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
968
- break
969
- }
970
- }
971
884
  }
972
- {
973
885
  if(_1 === "browser") {
974
886
  targets_ = (((_c) => {
975
887
  return ff_compiler_Syntax.TargetNames(_c.node_, true)
976
888
  }))(targets_)
977
889
  break
978
890
  }
979
- }
980
891
  {
981
892
  const t_ = _1;
982
893
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), ("Unexpected target: " + t_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
983
- break
984
894
  }
985
895
  } while(false)
986
896
  };
@@ -1116,7 +1026,7 @@ return ff_core_Option.Some(ff_compiler_Parser.Parser_parseTerm(self_))
1116
1026
  })());
1117
1027
  ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.Parameter(ff_compiler_Token.Token_at(parameterNameToken_), mutable_, ff_compiler_Token.Token_raw(parameterNameToken_), parameterType_, default_));
1118
1028
  if(lspTrackSymbols_) {
1119
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_), 7, ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_end(parameterNameToken_), ff_compiler_Token.Token_at(lspFirst_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
1029
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_), ff_compiler_LspHook.SParameter(), ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_end(parameterNameToken_), ff_compiler_Token.Token_at(lspFirst_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
1120
1030
  };
1121
1031
  if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
1122
1032
  ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
@@ -1446,24 +1356,17 @@ const operator_ = ff_core_String.String_dropLast(ff_compiler_Token.Token_raw(tok
1446
1356
  const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
1447
1357
  {
1448
1358
  const _1 = term_;
1449
- {
1450
1359
  if(_1.EVariable) {
1451
1360
  const at_ = _1.at_;
1452
1361
  const name_ = _1.name_;
1453
1362
  return ff_compiler_Syntax.EAssign(at_, operator_, name_, value_)
1454
- return
1455
- }
1456
1363
  }
1457
- {
1458
1364
  if(_1.EField) {
1459
1365
  const e_ = _1;
1460
1366
  return ff_compiler_Syntax.EAssignField(e_.at_, operator_, e_.record_, e_.field_, value_)
1461
- return
1462
- }
1463
1367
  }
1464
1368
  {
1465
1369
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Only variables and fields are assignable"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
1466
- return
1467
1370
  }
1468
1371
  }
1469
1372
  }
@@ -1494,10 +1397,7 @@ return ff_compiler_Syntax.ELet(ff_compiler_Token.Token_at(nameToken_), mutable_,
1494
1397
  ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
1495
1398
  const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
1496
1399
  if(self_.lspHook_.trackSymbols_) {
1497
- const kind_ = (mutable_
1498
- ? 13
1499
- : 14);
1500
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), kind_, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
1400
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(mutable_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
1501
1401
  };
1502
1402
  const body_ = (ff_compiler_Parser.Parser_currentIsSeparator(self_, ff_compiler_Token.LSemicolon())
1503
1403
  ? (function() {
@@ -1526,7 +1426,7 @@ return ff_compiler_Syntax.Lambda(functionAt_, temporaryEffect_, [])
1526
1426
  : ff_compiler_Parser.Parser_parseLambda(self_, ff_core_List.List_size(signature_.parameters_), false, false));
1527
1427
  ff_core_Array.Array_push(functions_, ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(body_)));
1528
1428
  if(self_.lspHook_.trackSymbols_) {
1529
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, 12, signature_.at_, (((_c) => {
1429
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(false), signature_.at_, (((_c) => {
1530
1430
  return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
1531
1431
  }))(signature_.at_), functionAt_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
1532
1432
  };
@@ -1548,7 +1448,7 @@ export function Parser_parseBinary(self_, level_) {
1548
1448
  if((level_ >= ff_core_List.List_size(ff_compiler_Parser.binaryOperators_))) {
1549
1449
  return ff_compiler_Parser.Parser_parseUnary(self_)
1550
1450
  } else {
1551
- const operators_ = ff_core_List.List_grab(ff_compiler_Parser.binaryOperators_, level_);
1451
+ const operators_ = (ff_compiler_Parser.binaryOperators_[level_] ?? ff_core_List.internalGrab_(ff_compiler_Parser.binaryOperators_, level_));
1552
1452
  let result_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
1553
1453
  if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LOperator())) {
1554
1454
  while(ff_core_List.List_any(operators_, ((value_) => {
@@ -1559,46 +1459,27 @@ const right_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
1559
1459
  const arguments_ = [ff_compiler_Syntax.Argument(result_.at_, ff_core_Option.None(), result_), ff_compiler_Syntax.Argument(right_.at_, ff_core_Option.None(), right_)];
1560
1460
  const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, ff_compiler_Token.Token_at(token_));
1561
1461
  const target_ = (((_1) => {
1562
- {
1563
1462
  if(_1 === "==") {
1564
1463
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.equals"), false)
1565
- return
1566
- }
1567
1464
  }
1568
- {
1569
1465
  if(_1 === "!=") {
1570
1466
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.notEquals"), false)
1571
- return
1572
1467
  }
1573
- }
1574
- {
1575
1468
  if(_1 === "<") {
1576
1469
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.before"), false)
1577
- return
1578
- }
1579
1470
  }
1580
- {
1581
1471
  if(_1 === "<=") {
1582
1472
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notAfter"), false)
1583
- return
1584
1473
  }
1585
- }
1586
- {
1587
1474
  if(_1 === ">") {
1588
1475
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.after"), false)
1589
- return
1590
- }
1591
1476
  }
1592
- {
1593
1477
  if(_1 === ">=") {
1594
1478
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notBefore"), false)
1595
- return
1596
- }
1597
1479
  }
1598
1480
  {
1599
1481
  const o_ = _1;
1600
1482
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), o_), false)
1601
- return
1602
1483
  }
1603
1484
  }))(ff_compiler_Token.Token_raw(token_));
1604
1485
  result_ = ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_, [], arguments_, [])
@@ -1823,45 +1704,23 @@ return _w1.first_
1823
1704
 
1824
1705
  export function Parser_parseListPattern(self_) {
1825
1706
  function convertListPattern_(at_, items_) {
1826
- {
1827
1707
  const at_a = at_;
1828
1708
  const items_a = items_;
1829
- {
1830
1709
  if(items_a.length === 0) {
1831
1710
  return ff_compiler_Syntax.PVariant(at_, "List$Empty", [])
1832
- return
1833
1711
  }
1834
- }
1835
- {
1836
- if(items_a.length > 0) {
1712
+ if(items_a.length >= 1 && !items_a[0].second_) {
1837
1713
  const p_ = items_a[0].first_;
1838
- if(!items_a[0].second_) {
1839
1714
  const ps_ = items_a.slice(1);
1840
1715
  return ff_compiler_Syntax.PVariant(at_, "List$Link", [p_, convertListPattern_(at_, ps_)])
1841
- return
1842
- }
1843
1716
  }
1844
- }
1845
- {
1846
- if(items_a.length > 0) {
1717
+ if(items_a.length === 1 && items_a[0].second_) {
1847
1718
  const p_ = items_a[0].first_;
1848
- if(items_a[0].second_) {
1849
- if(items_a.length === 1) {
1850
1719
  return p_
1851
- return
1852
- }
1853
- }
1854
- }
1855
1720
  }
1856
- {
1857
- if(items_a.length > 0) {
1721
+ if(items_a.length >= 1 && items_a[0].second_) {
1858
1722
  const p_ = items_a[0].first_;
1859
- if(items_a[0].second_) {
1860
1723
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(p_.at_, "Invalid pattern: ... is only allowed for the last element in a list"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
1861
- return
1862
- }
1863
- }
1864
- }
1865
1724
  }
1866
1725
  }
1867
1726
  const items_ = ff_core_Array.make_();
@@ -2092,7 +1951,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
2092
1951
  const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
2093
1952
  const retult_ = ff_compiler_Syntax.DLet(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), variableType_, value_);
2094
1953
  if(self_.lspHook_.trackSymbols_) {
2095
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), 14, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
1954
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(false), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2096
1955
  };
2097
1956
  return retult_
2098
1957
  }
@@ -2109,10 +1968,7 @@ const targets_ = ff_compiler_Parser.Parser_parseTargets(self_, ff_core_List.List
2109
1968
  const bestTarget_ = ff_compiler_Parser.findBestTarget_(self_.targetIsNode_, body_, targets_);
2110
1969
  const result_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, bestTarget_);
2111
1970
  if(self_.lspHook_.trackSymbols_) {
2112
- const kind_ = (member_
2113
- ? 6
2114
- : 12);
2115
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, kind_, signature_.at_, (((_c) => {
1971
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(member_), signature_.at_, (((_c) => {
2116
1972
  return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
2117
1973
  }))(signature_.at_), signature_.at_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2118
1974
  };
@@ -2137,7 +1993,6 @@ if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{"))
2137
1993
  const lambda_ = ff_compiler_Parser.Parser_parseLambda(self_, parameterCount_, false, false);
2138
1994
  do {
2139
1995
  const _1 = target_;
2140
- {
2141
1996
  if(_1 === "js") {
2142
1997
  if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2143
1998
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
@@ -2147,8 +2002,6 @@ return ff_compiler_Parser.ParsedTargets(ff_core_Option.Some(lambda_), _c.jsSync_
2147
2002
  }))(targets_)
2148
2003
  break
2149
2004
  }
2150
- }
2151
- {
2152
2005
  if(_1 === "browser") {
2153
2006
  if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2154
2007
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
@@ -2158,8 +2011,6 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, ff_core
2158
2011
  }))(targets_)
2159
2012
  break
2160
2013
  }
2161
- }
2162
- {
2163
2014
  if(_1 === "node") {
2164
2015
  if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2165
2016
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
@@ -2169,10 +2020,8 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
2169
2020
  }))(targets_)
2170
2021
  break
2171
2022
  }
2172
- }
2173
2023
  {
2174
2024
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Unknown target"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2175
- break
2176
2025
  }
2177
2026
  } while(false)
2178
2027
  } else {
@@ -2180,9 +2029,7 @@ const mode_ = ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_skip(self_,
2180
2029
  const code_ = processCode_(ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LString())));
2181
2030
  do {
2182
2031
  const _1 = ff_core_Pair.Pair(target_, mode_);
2183
- {
2184
- if(_1.first_ === "js") {
2185
- if(_1.second_ === "sync") {
2032
+ if(_1.first_ === "js" && _1.second_ === "sync") {
2186
2033
  if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2187
2034
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2188
2035
  };
@@ -2191,11 +2038,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, ff_core_Option.Some(code_), _c.j
2191
2038
  }))(targets_)
2192
2039
  break
2193
2040
  }
2194
- }
2195
- }
2196
- {
2197
- if(_1.first_ === "js") {
2198
- if(_1.second_ === "async") {
2041
+ if(_1.first_ === "js" && _1.second_ === "async") {
2199
2042
  if(ff_core_Equal.notEquals_(targets_.jsAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2200
2043
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2201
2044
  };
@@ -2204,11 +2047,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, ff_core_Option.Some(
2204
2047
  }))(targets_)
2205
2048
  break
2206
2049
  }
2207
- }
2208
- }
2209
- {
2210
- if(_1.first_ === "browser") {
2211
- if(_1.second_ === "sync") {
2050
+ if(_1.first_ === "browser" && _1.second_ === "sync") {
2212
2051
  if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2213
2052
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2214
2053
  };
@@ -2217,11 +2056,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
2217
2056
  }))(targets_)
2218
2057
  break
2219
2058
  }
2220
- }
2221
- }
2222
- {
2223
- if(_1.first_ === "browser") {
2224
- if(_1.second_ === "async") {
2059
+ if(_1.first_ === "browser" && _1.second_ === "async") {
2225
2060
  if(ff_core_Equal.notEquals_(targets_.browserAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2226
2061
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2227
2062
  };
@@ -2230,11 +2065,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
2230
2065
  }))(targets_)
2231
2066
  break
2232
2067
  }
2233
- }
2234
- }
2235
- {
2236
- if(_1.first_ === "node") {
2237
- if(_1.second_ === "sync") {
2068
+ if(_1.first_ === "node" && _1.second_ === "sync") {
2238
2069
  if(ff_core_Equal.notEquals_(targets_.nodeSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2239
2070
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2240
2071
  };
@@ -2243,11 +2074,7 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
2243
2074
  }))(targets_)
2244
2075
  break
2245
2076
  }
2246
- }
2247
- }
2248
- {
2249
- if(_1.first_ === "node") {
2250
- if(_1.second_ === "async") {
2077
+ if(_1.first_ === "node" && _1.second_ === "async") {
2251
2078
  if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
2252
2079
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2253
2080
  };
@@ -2256,11 +2083,8 @@ return ff_compiler_Parser.ParsedTargets(_c.js_, _c.jsSync_, _c.jsAsync_, _c.brow
2256
2083
  }))(targets_)
2257
2084
  break
2258
2085
  }
2259
- }
2260
- }
2261
2086
  {
2262
2087
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Unknown target or mode"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2263
- break
2264
2088
  }
2265
2089
  } while(false)
2266
2090
  }
@@ -2319,7 +2143,7 @@ name_ = ff_core_String.String_replace(name_, ((", " + generic_) + "]"), ((((", "
2319
2143
  return
2320
2144
  }
2321
2145
  }));
2322
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, 3, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(extendToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2146
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SExtend(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(extendToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2323
2147
  };
2324
2148
  return ff_compiler_Syntax.DExtend(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), poly_.generics_, poly_.constraints_, type_, ff_core_Array.Array_toList(methods_, 0, 9007199254740991))
2325
2149
  }
@@ -2361,7 +2185,7 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
2361
2185
  const signatureNameToken_ = ff_compiler_Parser.Parser_current(self_);
2362
2186
  const signature_ = ff_compiler_Parser.Parser_parseSignature(self_, true);
2363
2187
  if(self_.lspHook_.trackSymbols_) {
2364
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_), 12, ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(signatureNameToken_), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2188
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_), ff_compiler_LspHook.STraitFunction(), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(signatureNameToken_), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2365
2189
  };
2366
2190
  ff_core_Array.Array_push(signatures_, signature_);
2367
2191
  if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
@@ -2381,7 +2205,7 @@ ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}")
2381
2205
  return ff_core_Array.Array_toList(signatures_, 0, 9007199254740991)
2382
2206
  })()));
2383
2207
  if(self_.lspHook_.trackSymbols_) {
2384
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), 11, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(traitToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2208
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.STrait(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(traitToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2385
2209
  };
2386
2210
  return ff_compiler_Syntax.DTrait(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), [ff_compiler_Token.Token_raw(typeParameterToken_), ...poly_.generics_], [...ff_core_Array.Array_toList(constraints_, 0, 9007199254740991), ...poly_.constraints_], generatorParameters_, methodSignatures_, ff_core_Array.Array_toList(methodDefaults_, 0, 9007199254740991), ff_core_Array.Array_toList(methodGenerators_, 0, 9007199254740991))
2387
2211
  }
@@ -2428,7 +2252,7 @@ return ff_core_Array.Array_toList(definitions_, 0, 9007199254740991)
2428
2252
  })()));
2429
2253
  if(self_.lspHook_.trackSymbols_) {
2430
2254
  const name_ = ((ff_compiler_Token.Token_raw(token_) + ": ") + ff_compiler_Token.Token_raw(nameToken_));
2431
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, 19, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(instanceToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2255
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SInstance(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(instanceToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2432
2256
  };
2433
2257
  return ff_compiler_Syntax.DInstance(ff_compiler_Token.Token_at(nameToken_), poly_.generics_, poly_.constraints_, ff_compiler_Token.Token_raw(nameToken_), ff_core_Array.Array_toList(typeArguments_, 0, 9007199254740991), generatorArguments_, methods_, false)
2434
2258
  }
@@ -2484,7 +2308,7 @@ if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_com
2484
2308
  ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
2485
2309
  };
2486
2310
  if(self_.lspHook_.trackSymbols_) {
2487
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_), 10, ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(variantNameToken_), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2311
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_), ff_compiler_LspHook.SVariant(), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(variantNameToken_), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2488
2312
  }
2489
2313
  };
2490
2314
  ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
@@ -2504,7 +2328,7 @@ return _w1.mutable_
2504
2328
  const generics_ = [...effectParameter_, ...poly_.generics_];
2505
2329
  const result_ = ff_compiler_Syntax.DType(ff_compiler_Token.Token_at(nameToken_), newtype_, (!allowMutable_), ff_compiler_Token.Token_raw(nameToken_), generics_, poly_.constraints_, commonFields_, variants_);
2506
2330
  if(self_.lspHook_.trackSymbols_) {
2507
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), 5, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(kindToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2331
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SType(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(kindToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2508
2332
  };
2509
2333
  return result_
2510
2334
  }
@@ -2576,44 +2400,27 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
2576
2400
  : ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LKeyword()));
2577
2401
  do {
2578
2402
  const _1 = ff_compiler_Token.Token_raw(token_);
2579
- {
2580
- if(_1 === "node") {
2581
- const _guard1 = targets_.node_;
2582
- if(_guard1) {
2403
+ if(_1 === "node" && targets_.node_) {
2583
2404
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2584
- break
2585
2405
  }
2586
- }
2587
- }
2588
- {
2589
2406
  if(_1 === "node") {
2590
2407
  targets_ = (((_c) => {
2591
2408
  return ff_compiler_Syntax.TargetNames(true, _c.browser_)
2592
2409
  }))(targets_)
2593
2410
  break
2594
2411
  }
2595
- }
2596
- {
2597
- if(_1 === "browser") {
2598
- const _guard1 = targets_.browser_;
2599
- if(_guard1) {
2412
+ if(_1 === "browser" && targets_.browser_) {
2600
2413
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2601
- break
2602
- }
2603
- }
2604
2414
  }
2605
- {
2606
2415
  if(_1 === "browser") {
2607
2416
  targets_ = (((_c) => {
2608
2417
  return ff_compiler_Syntax.TargetNames(_c.node_, true)
2609
2418
  }))(targets_)
2610
2419
  break
2611
2420
  }
2612
- }
2613
2421
  {
2614
2422
  const t_ = _1;
2615
2423
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), ("Unexpected target: " + t_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
2616
- break
2617
2424
  }
2618
2425
  } while(false)
2619
2426
  };
@@ -2749,7 +2556,7 @@ return ff_core_Option.Some(ff_compiler_Parser.Parser_parseTerm(self_))
2749
2556
  })()));
2750
2557
  ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.Parameter(ff_compiler_Token.Token_at(parameterNameToken_), mutable_, ff_compiler_Token.Token_raw(parameterNameToken_), parameterType_, default_));
2751
2558
  if(lspTrackSymbols_) {
2752
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_), 7, ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_end(parameterNameToken_), ff_compiler_Token.Token_at(lspFirst_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2559
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_), ff_compiler_LspHook.SParameter(), ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_end(parameterNameToken_), ff_compiler_Token.Token_at(lspFirst_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2753
2560
  };
2754
2561
  if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
2755
2562
  ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
@@ -3079,24 +2886,17 @@ const operator_ = ff_core_String.String_dropLast(ff_compiler_Token.Token_raw(tok
3079
2886
  const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
3080
2887
  {
3081
2888
  const _1 = term_;
3082
- {
3083
2889
  if(_1.EVariable) {
3084
2890
  const at_ = _1.at_;
3085
2891
  const name_ = _1.name_;
3086
2892
  return ff_compiler_Syntax.EAssign(at_, operator_, name_, value_)
3087
- return
3088
- }
3089
2893
  }
3090
- {
3091
2894
  if(_1.EField) {
3092
2895
  const e_ = _1;
3093
2896
  return ff_compiler_Syntax.EAssignField(e_.at_, operator_, e_.record_, e_.field_, value_)
3094
- return
3095
- }
3096
2897
  }
3097
2898
  {
3098
2899
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Only variables and fields are assignable"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
3099
- return
3100
2900
  }
3101
2901
  }
3102
2902
  }
@@ -3127,10 +2927,7 @@ return ff_compiler_Syntax.ELet(ff_compiler_Token.Token_at(nameToken_), mutable_,
3127
2927
  ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
3128
2928
  const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
3129
2929
  if(self_.lspHook_.trackSymbols_) {
3130
- const kind_ = (mutable_
3131
- ? 13
3132
- : 14);
3133
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), kind_, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
2930
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(mutable_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
3134
2931
  };
3135
2932
  const body_ = (ff_compiler_Parser.Parser_currentIsSeparator(self_, ff_compiler_Token.LSemicolon())
3136
2933
  ? (await (async function() {
@@ -3159,7 +2956,7 @@ return ff_compiler_Syntax.Lambda(functionAt_, temporaryEffect_, [])
3159
2956
  : ff_compiler_Parser.Parser_parseLambda(self_, ff_core_List.List_size(signature_.parameters_), false, false));
3160
2957
  ff_core_Array.Array_push(functions_, ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(body_)));
3161
2958
  if(self_.lspHook_.trackSymbols_) {
3162
- ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, 12, signature_.at_, (((_c) => {
2959
+ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(false), signature_.at_, (((_c) => {
3163
2960
  return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
3164
2961
  }))(signature_.at_), functionAt_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
3165
2962
  };
@@ -3181,7 +2978,7 @@ export async function Parser_parseBinary$(self_, level_, $task) {
3181
2978
  if((level_ >= ff_core_List.List_size(ff_compiler_Parser.binaryOperators_))) {
3182
2979
  return ff_compiler_Parser.Parser_parseUnary(self_)
3183
2980
  } else {
3184
- const operators_ = ff_core_List.List_grab(ff_compiler_Parser.binaryOperators_, level_);
2981
+ const operators_ = (ff_compiler_Parser.binaryOperators_[level_] ?? ff_core_List.internalGrab_(ff_compiler_Parser.binaryOperators_, level_));
3185
2982
  let result_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
3186
2983
  if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LOperator())) {
3187
2984
  while(ff_core_List.List_any(operators_, ((value_) => {
@@ -3192,46 +2989,27 @@ const right_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
3192
2989
  const arguments_ = [ff_compiler_Syntax.Argument(result_.at_, ff_core_Option.None(), result_), ff_compiler_Syntax.Argument(right_.at_, ff_core_Option.None(), right_)];
3193
2990
  const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, ff_compiler_Token.Token_at(token_));
3194
2991
  const target_ = (((_1) => {
3195
- {
3196
2992
  if(_1 === "==") {
3197
2993
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.equals"), false)
3198
- return
3199
- }
3200
2994
  }
3201
- {
3202
2995
  if(_1 === "!=") {
3203
2996
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.notEquals"), false)
3204
- return
3205
2997
  }
3206
- }
3207
- {
3208
2998
  if(_1 === "<") {
3209
2999
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.before"), false)
3210
- return
3211
- }
3212
3000
  }
3213
- {
3214
3001
  if(_1 === "<=") {
3215
3002
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notAfter"), false)
3216
- return
3217
3003
  }
3218
- }
3219
- {
3220
3004
  if(_1 === ">") {
3221
3005
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.after"), false)
3222
- return
3223
- }
3224
3006
  }
3225
- {
3226
3007
  if(_1 === ">=") {
3227
3008
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notBefore"), false)
3228
- return
3229
- }
3230
3009
  }
3231
3010
  {
3232
3011
  const o_ = _1;
3233
3012
  return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), o_), false)
3234
- return
3235
3013
  }
3236
3014
  }))(ff_compiler_Token.Token_raw(token_));
3237
3015
  result_ = ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_, [], arguments_, [])
@@ -3456,45 +3234,23 @@ return _w1.first_
3456
3234
 
3457
3235
  export async function Parser_parseListPattern$(self_, $task) {
3458
3236
  function convertListPattern_(at_, items_) {
3459
- {
3460
3237
  const at_a = at_;
3461
3238
  const items_a = items_;
3462
- {
3463
3239
  if(items_a.length === 0) {
3464
3240
  return ff_compiler_Syntax.PVariant(at_, "List$Empty", [])
3465
- return
3466
3241
  }
3467
- }
3468
- {
3469
- if(items_a.length > 0) {
3242
+ if(items_a.length >= 1 && !items_a[0].second_) {
3470
3243
  const p_ = items_a[0].first_;
3471
- if(!items_a[0].second_) {
3472
3244
  const ps_ = items_a.slice(1);
3473
3245
  return ff_compiler_Syntax.PVariant(at_, "List$Link", [p_, convertListPattern_(at_, ps_)])
3474
- return
3475
- }
3476
3246
  }
3477
- }
3478
- {
3479
- if(items_a.length > 0) {
3247
+ if(items_a.length === 1 && items_a[0].second_) {
3480
3248
  const p_ = items_a[0].first_;
3481
- if(items_a[0].second_) {
3482
- if(items_a.length === 1) {
3483
3249
  return p_
3484
- return
3485
- }
3486
- }
3487
- }
3488
3250
  }
3489
- {
3490
- if(items_a.length > 0) {
3251
+ if(items_a.length >= 1 && items_a[0].second_) {
3491
3252
  const p_ = items_a[0].first_;
3492
- if(items_a[0].second_) {
3493
3253
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(p_.at_, "Invalid pattern: ... is only allowed for the last element in a list"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
3494
- return
3495
- }
3496
- }
3497
- }
3498
3254
  }
3499
3255
  }
3500
3256
  const items_ = ff_core_Array.make_();
@@ -3553,135 +3309,90 @@ return ff_core_Any.internalAnyTag_((("ff:compiler/Parser.ParsedTargets" + "[") +
3553
3309
 
3554
3310
  export const ff_core_Show_Show$ff_compiler_Parser_Poly = {
3555
3311
  show_(value_) {
3556
- {
3557
3312
  const value_a = value_;
3558
3313
  {
3559
3314
  const z_ = value_a;
3560
3315
  return ((((("Poly" + "(") + ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.generics_)) + ", ") + ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Constraint).show_(z_.constraints_)) + ")")
3561
- return
3562
- }
3563
3316
  }
3564
3317
  },
3565
3318
  async show_$(value_, $task) {
3566
- {
3567
3319
  const value_a = value_;
3568
3320
  {
3569
3321
  const z_ = value_a;
3570
3322
  return ((((("Poly" + "(") + ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.generics_)) + ", ") + ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Constraint).show_(z_.constraints_)) + ")")
3571
- return
3572
- }
3573
3323
  }
3574
3324
  }
3575
3325
  };
3576
3326
 
3577
3327
  export const ff_core_Show_Show$ff_compiler_Parser_ParsedTargets = {
3578
3328
  show_(value_) {
3579
- {
3580
3329
  const value_a = value_;
3581
3330
  {
3582
3331
  const z_ = value_a;
3583
3332
  return ((((((((((((((((((("ParsedTargets" + "(") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Lambda).show_(z_.js_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.jsSync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.jsAsync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Lambda).show_(z_.browser_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.browserSync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.browserAsync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Lambda).show_(z_.node_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.nodeSync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.nodeAsync_)) + ")")
3584
- return
3585
- }
3586
3333
  }
3587
3334
  },
3588
3335
  async show_$(value_, $task) {
3589
- {
3590
3336
  const value_a = value_;
3591
3337
  {
3592
3338
  const z_ = value_a;
3593
3339
  return ((((((((((((((((((("ParsedTargets" + "(") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Lambda).show_(z_.js_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.jsSync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.jsAsync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Lambda).show_(z_.browser_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.browserSync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.browserAsync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Lambda).show_(z_.node_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.nodeSync_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.nodeAsync_)) + ")")
3594
- return
3595
- }
3596
3340
  }
3597
3341
  }
3598
3342
  };
3599
3343
 
3600
3344
  export const ff_core_Equal_Equal$ff_compiler_Parser_Poly = {
3601
3345
  equals_(x_, y_) {
3602
- {
3603
3346
  const x_a = x_;
3604
3347
  const y_a = y_;
3605
- {
3606
- const _guard1 = (x_ === y_);
3607
- if(_guard1) {
3348
+ if((x_ === y_)) {
3608
3349
  return true
3609
- return
3610
- }
3611
3350
  }
3612
3351
  {
3613
3352
  return (ff_core_List.ff_core_Equal_Equal$ff_core_List_List(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.generics_, y_.generics_) && ff_core_List.ff_core_Equal_Equal$ff_core_List_List(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Constraint).equals_(x_.constraints_, y_.constraints_))
3614
- return
3615
- }
3616
3353
  }
3617
3354
  },
3618
3355
  async equals_$(x_, y_, $task) {
3619
- {
3620
3356
  const x_a = x_;
3621
3357
  const y_a = y_;
3622
- {
3623
- const _guard1 = (x_ === y_);
3624
- if(_guard1) {
3358
+ if((x_ === y_)) {
3625
3359
  return true
3626
- return
3627
- }
3628
3360
  }
3629
3361
  {
3630
3362
  return (ff_core_List.ff_core_Equal_Equal$ff_core_List_List(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.generics_, y_.generics_) && ff_core_List.ff_core_Equal_Equal$ff_core_List_List(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Constraint).equals_(x_.constraints_, y_.constraints_))
3631
- return
3632
- }
3633
3363
  }
3634
3364
  }
3635
3365
  };
3636
3366
 
3637
3367
  export const ff_core_Equal_Equal$ff_compiler_Parser_ParsedTargets = {
3638
3368
  equals_(x_, y_) {
3639
- {
3640
3369
  const x_a = x_;
3641
3370
  const y_a = y_;
3642
- {
3643
- const _guard1 = (x_ === y_);
3644
- if(_guard1) {
3371
+ if((x_ === y_)) {
3645
3372
  return true
3646
- return
3647
- }
3648
3373
  }
3649
3374
  {
3650
3375
  return (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Lambda).equals_(x_.js_, y_.js_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.jsSync_, y_.jsSync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.jsAsync_, y_.jsAsync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Lambda).equals_(x_.browser_, y_.browser_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.browserSync_, y_.browserSync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.browserAsync_, y_.browserAsync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Lambda).equals_(x_.node_, y_.node_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.nodeSync_, y_.nodeSync_) && ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.nodeAsync_, y_.nodeAsync_)))))))))
3651
- return
3652
- }
3653
3376
  }
3654
3377
  },
3655
3378
  async equals_$(x_, y_, $task) {
3656
- {
3657
3379
  const x_a = x_;
3658
3380
  const y_a = y_;
3659
- {
3660
- const _guard1 = (x_ === y_);
3661
- if(_guard1) {
3381
+ if((x_ === y_)) {
3662
3382
  return true
3663
- return
3664
- }
3665
3383
  }
3666
3384
  {
3667
3385
  return (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Lambda).equals_(x_.js_, y_.js_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.jsSync_, y_.jsSync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.jsAsync_, y_.jsAsync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Lambda).equals_(x_.browser_, y_.browser_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.browserSync_, y_.browserSync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.browserAsync_, y_.browserAsync_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Lambda).equals_(x_.node_, y_.node_) && (ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.nodeSync_, y_.nodeSync_) && ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.nodeAsync_, y_.nodeAsync_)))))))))
3668
- return
3669
- }
3670
3386
  }
3671
3387
  }
3672
3388
  };
3673
3389
 
3674
3390
  export const ff_core_Ordering_Order$ff_compiler_Parser_Poly = {
3675
3391
  compare_(x_, y_) {
3676
- {
3677
3392
  const x_a = x_;
3678
3393
  const y_a = y_;
3679
- {
3680
- const _guard1 = (x_ === y_);
3681
- if(_guard1) {
3394
+ if((x_ === y_)) {
3682
3395
  return ff_core_Ordering.OrderingSame()
3683
- return
3684
- }
3685
3396
  }
3686
3397
  {
3687
3398
  const genericsOrdering_ = ff_core_Ordering.ff_core_Ordering_Order$ff_core_List_List(ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String).compare_(x_.generics_, y_.generics_);
@@ -3697,18 +3408,12 @@ return ff_core_Ordering.OrderingSame()
3697
3408
  }
3698
3409
  return
3699
3410
  }
3700
- }
3701
3411
  },
3702
3412
  async compare_$(x_, y_, $task) {
3703
- {
3704
3413
  const x_a = x_;
3705
3414
  const y_a = y_;
3706
- {
3707
- const _guard1 = (x_ === y_);
3708
- if(_guard1) {
3415
+ if((x_ === y_)) {
3709
3416
  return ff_core_Ordering.OrderingSame()
3710
- return
3711
- }
3712
3417
  }
3713
3418
  {
3714
3419
  const genericsOrdering_ = ff_core_Ordering.ff_core_Ordering_Order$ff_core_List_List(ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String).compare_(x_.generics_, y_.generics_);
@@ -3725,20 +3430,14 @@ return ff_core_Ordering.OrderingSame()
3725
3430
  return
3726
3431
  }
3727
3432
  }
3728
- }
3729
3433
  };
3730
3434
 
3731
3435
  export const ff_core_Ordering_Order$ff_compiler_Parser_ParsedTargets = {
3732
3436
  compare_(x_, y_) {
3733
- {
3734
3437
  const x_a = x_;
3735
3438
  const y_a = y_;
3736
- {
3737
- const _guard1 = (x_ === y_);
3738
- if(_guard1) {
3439
+ if((x_ === y_)) {
3739
3440
  return ff_core_Ordering.OrderingSame()
3740
- return
3741
- }
3742
3441
  }
3743
3442
  {
3744
3443
  const jsOrdering_ = ff_core_Option.ff_core_Ordering_Order$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_Lambda).compare_(x_.js_, y_.js_);
@@ -3789,18 +3488,12 @@ return ff_core_Ordering.OrderingSame()
3789
3488
  }
3790
3489
  return
3791
3490
  }
3792
- }
3793
3491
  },
3794
3492
  async compare_$(x_, y_, $task) {
3795
- {
3796
3493
  const x_a = x_;
3797
3494
  const y_a = y_;
3798
- {
3799
- const _guard1 = (x_ === y_);
3800
- if(_guard1) {
3495
+ if((x_ === y_)) {
3801
3496
  return ff_core_Ordering.OrderingSame()
3802
- return
3803
- }
3804
3497
  }
3805
3498
  {
3806
3499
  const jsOrdering_ = ff_core_Option.ff_core_Ordering_Order$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_Lambda).compare_(x_.js_, y_.js_);
@@ -3852,12 +3545,10 @@ return ff_core_Ordering.OrderingSame()
3852
3545
  return
3853
3546
  }
3854
3547
  }
3855
- }
3856
3548
  };
3857
3549
 
3858
3550
  export const ff_core_Serializable_Serializable$ff_compiler_Parser_Poly = {
3859
3551
  serializeUsing_(serialization_, value_) {
3860
- {
3861
3552
  const serialization_a = serialization_;
3862
3553
  const value_a = value_;
3863
3554
  {
@@ -3870,28 +3561,22 @@ ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_core
3870
3561
  ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Constraint).serializeUsing_(serialization_, v_.constraints_)
3871
3562
  return
3872
3563
  }
3873
- }
3874
3564
  },
3875
3565
  deserializeUsing_(serialization_) {
3876
3566
  const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
3877
3567
  serialization_.offset_ += 1;
3878
3568
  {
3879
3569
  const _1 = variantIndex_;
3880
- {
3881
3570
  if(_1 === 0) {
3882
3571
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 23), 0);
3883
3572
  return ff_compiler_Parser.Poly(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(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_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Constraint).deserializeUsing_(serialization_))
3884
- return
3885
- }
3886
3573
  }
3887
3574
  {
3888
3575
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException)})
3889
- return
3890
3576
  }
3891
3577
  }
3892
3578
  },
3893
3579
  async serializeUsing_$(serialization_, value_, $task) {
3894
- {
3895
3580
  const serialization_a = serialization_;
3896
3581
  const value_a = value_;
3897
3582
  {
@@ -3904,23 +3589,18 @@ ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_core
3904
3589
  ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Constraint).serializeUsing_(serialization_, v_.constraints_)
3905
3590
  return
3906
3591
  }
3907
- }
3908
3592
  },
3909
3593
  async deserializeUsing_$(serialization_, $task) {
3910
3594
  const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
3911
3595
  serialization_.offset_ += 1;
3912
3596
  {
3913
3597
  const _1 = variantIndex_;
3914
- {
3915
3598
  if(_1 === 0) {
3916
3599
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 23), 0);
3917
3600
  return ff_compiler_Parser.Poly(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(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_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Constraint).deserializeUsing_(serialization_))
3918
- return
3919
- }
3920
3601
  }
3921
3602
  {
3922
3603
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException)})
3923
- return
3924
3604
  }
3925
3605
  }
3926
3606
  }
@@ -3928,7 +3608,6 @@ return
3928
3608
 
3929
3609
  export const ff_core_Serializable_Serializable$ff_compiler_Parser_ParsedTargets = {
3930
3610
  serializeUsing_(serialization_, value_) {
3931
- {
3932
3611
  const serialization_a = serialization_;
3933
3612
  const value_a = value_;
3934
3613
  {
@@ -3948,28 +3627,22 @@ ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_S
3948
3627
  ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).serializeUsing_(serialization_, v_.nodeAsync_)
3949
3628
  return
3950
3629
  }
3951
- }
3952
3630
  },
3953
3631
  deserializeUsing_(serialization_) {
3954
3632
  const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
3955
3633
  serialization_.offset_ += 1;
3956
3634
  {
3957
3635
  const _1 = variantIndex_;
3958
- {
3959
3636
  if(_1 === 0) {
3960
3637
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 32), 0);
3961
3638
  return ff_compiler_Parser.ParsedTargets(ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
3962
- return
3963
- }
3964
3639
  }
3965
3640
  {
3966
3641
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException)})
3967
- return
3968
3642
  }
3969
3643
  }
3970
3644
  },
3971
3645
  async serializeUsing_$(serialization_, value_, $task) {
3972
- {
3973
3646
  const serialization_a = serialization_;
3974
3647
  const value_a = value_;
3975
3648
  {
@@ -3989,23 +3662,18 @@ ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_S
3989
3662
  ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).serializeUsing_(serialization_, v_.nodeAsync_)
3990
3663
  return
3991
3664
  }
3992
- }
3993
3665
  },
3994
3666
  async deserializeUsing_$(serialization_, $task) {
3995
3667
  const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
3996
3668
  serialization_.offset_ += 1;
3997
3669
  {
3998
3670
  const _1 = variantIndex_;
3999
- {
4000
3671
  if(_1 === 0) {
4001
3672
  serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 32), 0);
4002
3673
  return ff_compiler_Parser.ParsedTargets(ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
4003
- return
4004
- }
4005
3674
  }
4006
3675
  {
4007
3676
  throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException)})
4008
- return
4009
3677
  }
4010
3678
  }
4011
3679
  }