firefly-compiler 0.5.78 → 0.5.79

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 (82) hide show
  1. package/compiler/Builder.ff +1 -1
  2. package/compiler/JsEmitter.ff +11 -2
  3. package/compiler/Main.ff +6 -1
  4. package/core/Core.ff +4 -4
  5. package/core/Error.ff +7 -1
  6. package/core/Js.ff +13 -2
  7. package/fireflysite/Html.ff +15 -2
  8. package/output/js/ff/compiler/Builder.mjs +2 -3
  9. package/output/js/ff/compiler/Builder.mjs.map +2 -2
  10. package/output/js/ff/compiler/Compiler.mjs +8 -8
  11. package/output/js/ff/compiler/Compiler.mjs.map +1 -1
  12. package/output/js/ff/compiler/Dependencies.mjs +10 -10
  13. package/output/js/ff/compiler/Dependencies.mjs.map +1 -1
  14. package/output/js/ff/compiler/Deriver.mjs +2 -2
  15. package/output/js/ff/compiler/Deriver.mjs.map +1 -1
  16. package/output/js/ff/compiler/Dictionaries.mjs +4 -4
  17. package/output/js/ff/compiler/Dictionaries.mjs.map +1 -1
  18. package/output/js/ff/compiler/Environment.mjs +6 -6
  19. package/output/js/ff/compiler/Environment.mjs.map +1 -1
  20. package/output/js/ff/compiler/Inference.mjs +80 -80
  21. package/output/js/ff/compiler/Inference.mjs.map +1 -1
  22. package/output/js/ff/compiler/JsEmitter.mjs +60 -14
  23. package/output/js/ff/compiler/JsEmitter.mjs.map +2 -2
  24. package/output/js/ff/compiler/JsImporter.mjs +8 -8
  25. package/output/js/ff/compiler/JsImporter.mjs.map +1 -1
  26. package/output/js/ff/compiler/LspHook.mjs +4 -4
  27. package/output/js/ff/compiler/LspHook.mjs.map +1 -1
  28. package/output/js/ff/compiler/Main.mjs +42 -32
  29. package/output/js/ff/compiler/Main.mjs.map +7 -2
  30. package/output/js/ff/compiler/Parser.mjs +50 -50
  31. package/output/js/ff/compiler/Parser.mjs.map +1 -1
  32. package/output/js/ff/compiler/Patterns.mjs +6 -6
  33. package/output/js/ff/compiler/Patterns.mjs.map +1 -1
  34. package/output/js/ff/compiler/Resolver.mjs +32 -32
  35. package/output/js/ff/compiler/Resolver.mjs.map +1 -1
  36. package/output/js/ff/compiler/Syntax.mjs +74 -74
  37. package/output/js/ff/compiler/Syntax.mjs.map +1 -1
  38. package/output/js/ff/compiler/Token.mjs +4 -4
  39. package/output/js/ff/compiler/Token.mjs.map +1 -1
  40. package/output/js/ff/compiler/Tokenizer.mjs +4 -4
  41. package/output/js/ff/compiler/Tokenizer.mjs.map +1 -1
  42. package/output/js/ff/compiler/Unification.mjs +14 -14
  43. package/output/js/ff/compiler/Unification.mjs.map +1 -1
  44. package/output/js/ff/compiler/Workspace.mjs +4 -4
  45. package/output/js/ff/compiler/Workspace.mjs.map +1 -1
  46. package/output/js/ff/core/Array.mjs +10 -10
  47. package/output/js/ff/core/Array.mjs.map +1 -1
  48. package/output/js/ff/core/Buffer.mjs +4 -4
  49. package/output/js/ff/core/Buffer.mjs.map +1 -1
  50. package/output/js/ff/core/Core.mjs +4 -8
  51. package/output/js/ff/core/Core.mjs.map +4 -6
  52. package/output/js/ff/core/Error.mjs +32 -2
  53. package/output/js/ff/core/Error.mjs.map +15 -2
  54. package/output/js/ff/core/IntMap.mjs +2 -2
  55. package/output/js/ff/core/IntMap.mjs.map +1 -1
  56. package/output/js/ff/core/Js.mjs +20 -4
  57. package/output/js/ff/core/Js.mjs.map +8 -4
  58. package/output/js/ff/core/JsValue.mjs +20 -20
  59. package/output/js/ff/core/JsValue.mjs.map +1 -1
  60. package/output/js/ff/core/Json.mjs +10 -10
  61. package/output/js/ff/core/Json.mjs.map +1 -1
  62. package/output/js/ff/core/List.mjs +4 -4
  63. package/output/js/ff/core/List.mjs.map +1 -1
  64. package/output/js/ff/core/Lock.mjs +4 -4
  65. package/output/js/ff/core/Lock.mjs.map +1 -1
  66. package/output/js/ff/core/NodeSystem.mjs +2 -2
  67. package/output/js/ff/core/NodeSystem.mjs.map +1 -1
  68. package/output/js/ff/core/Option.mjs +2 -2
  69. package/output/js/ff/core/Option.mjs.map +1 -1
  70. package/output/js/ff/core/Pair.mjs +2 -2
  71. package/output/js/ff/core/Pair.mjs.map +1 -1
  72. package/output/js/ff/core/Serializable.mjs +2 -2
  73. package/output/js/ff/core/Serializable.mjs.map +1 -1
  74. package/output/js/ff/core/String.mjs +10 -10
  75. package/output/js/ff/core/String.mjs.map +1 -1
  76. package/output/js/ff/core/StringMap.mjs +2 -2
  77. package/output/js/ff/core/StringMap.mjs.map +1 -1
  78. package/output/js/ff/core/Try.mjs +2 -2
  79. package/output/js/ff/core/Try.mjs.map +1 -1
  80. package/package.json +1 -2
  81. package/vscode/package.json +1 -1
  82. package/webserver/WebServer.ff +1 -1
@@ -168,7 +168,7 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
168
168
  if(((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && ff_compiler_Token.ff_core_Equal_Equal$ff_compiler_Token_TokenKind.equals_(kind_, ff_compiler_Token.LUpper())) && ff_compiler_Token.ff_core_Equal_Equal$ff_compiler_Token_TokenKind.equals_(c_.kind_, ff_compiler_Token.LLower()))) {
169
169
 
170
170
  } else {
171
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + ", got ") + ff_compiler_Token.Token_raw(c_))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
171
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + ", got ") + ff_compiler_Token.Token_raw(c_))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
172
172
  }
173
173
  };
174
174
  self_.offset_ += 1;
@@ -181,14 +181,14 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
181
181
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
182
182
 
183
183
  } else {
184
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + " ") + value_) + ", got ") + ff_compiler_Token.Token_raw(c_))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
184
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + " ") + value_) + ", got ") + ff_compiler_Token.Token_raw(c_))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
185
185
  }
186
186
  };
187
187
  if((!ff_compiler_Token.Token_rawIs(c_, value_))) {
188
188
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
189
189
  self_.offset_ -= 1
190
190
  } else {
191
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + value_) + " got ") + ff_compiler_Token.Token_raw(c_))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
191
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + value_) + " got ") + ff_compiler_Token.Token_raw(c_))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
192
192
  }
193
193
  };
194
194
  self_.offset_ += 1;
@@ -219,7 +219,7 @@ const moduleWithPackageInfo_ = ff_compiler_Parser.Parser_parseModuleWithPackageI
219
219
  const if_o = moduleWithPackageInfo_.packageInfo_
220
220
  if(if_o.Some) {
221
221
  const info_ = if_o.value_;
222
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(info_.package_.at_, "Package and dependencies already declared in package.ff"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
222
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(info_.package_.at_, "Package and dependencies already declared in package.ff"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
223
223
  }
224
224
  };
225
225
  return moduleWithPackageInfo_.module_
@@ -245,7 +245,7 @@ return p_
245
245
  })()
246
246
  : ff_compiler_Syntax.DPackage(location_, self_.moduleKey_.packagePair_, ff_compiler_Syntax.Version(location_, 0, 0, 0), ff_compiler_Syntax.TargetNames(self_.targetIsNode_, (!self_.targetIsNode_))));
247
247
  if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "package"))) {
248
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Duplicate package definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
248
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Duplicate package definition"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
249
249
  };
250
250
  const dependencies_ = ff_core_Array.new_();
251
251
  while((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
@@ -293,11 +293,11 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower())
293
293
  imports_.array.push(ff_compiler_Parser.Parser_parseImportDefinition(self_, self_.moduleKey_.packagePair_))
294
294
  }
295
295
  } else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "include"))) {
296
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Includes must be at the top of the file or below 'package'"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
296
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Includes must be at the top of the file or below 'package'"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
297
297
  } else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
298
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Dependencies must be at the top of the file or below 'package'"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
298
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Dependencies must be at the top of the file or below 'package'"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
299
299
  } else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "package"))) {
300
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Package definition must be at the top of the file"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
300
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Package definition must be at the top of the file"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
301
301
  } else {
302
302
  ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LEnd())
303
303
  };
@@ -541,9 +541,9 @@ const variantFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parse
541
541
  if(((!allowMutable_) && ff_core_List.List_any(variantFields_, ((_w1) => {
542
542
  return _w1.mutable_
543
543
  })))) {
544
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
544
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
545
545
  return _w1.mutable_
546
- }))).at_, "Only classes can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
546
+ }))).at_, "Only classes can have mutable fields"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
547
547
  };
548
548
  variantsBuilder_.array.push(ff_compiler_Syntax.Variant(ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_raw(variantNameToken_), variantFields_));
549
549
  if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
@@ -558,14 +558,14 @@ return ff_core_Array.Array_toList(variantsBuilder_, 0, 9007199254740991)
558
558
  })());
559
559
  if((newtype_ && (commonFields_.length !== 1))) {
560
560
  ff_core_Log.show_(commonFields_, ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Parameter));
561
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(nameToken_), "Newtypes must have exactly one field"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
561
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(nameToken_), "Newtypes must have exactly one field"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
562
562
  };
563
563
  if(((!allowMutable_) && ff_core_List.List_any(commonFields_, ((_w1) => {
564
564
  return _w1.mutable_
565
565
  })))) {
566
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
566
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
567
567
  return _w1.mutable_
568
- }))).at_, "Only classes and capabilities can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
568
+ }))).at_, "Only classes and capabilities can have mutable fields"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
569
569
  };
570
570
  const generics_ = [...effectParameter_, ...poly_.generics_];
571
571
  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_);
@@ -640,7 +640,7 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
640
640
  do {
641
641
  const _1 = ff_compiler_Token.Token_raw(token_);
642
642
  if(_1 === "node" && targets_.node_) {
643
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
643
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
644
644
  }
645
645
  if(_1 === "node") {
646
646
  targets_ = (((_c) => {
@@ -649,7 +649,7 @@ return ff_compiler_Syntax.TargetNames(true, _c.browser_)
649
649
  break
650
650
  }
651
651
  if(_1 === "browser" && targets_.browser_) {
652
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
652
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
653
653
  }
654
654
  if(_1 === "browser") {
655
655
  targets_ = (((_c) => {
@@ -659,7 +659,7 @@ break
659
659
  }
660
660
  {
661
661
  const t_ = _1;
662
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), ("Unexpected target: " + t_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
662
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), ("Unexpected target: " + t_)), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
663
663
  }
664
664
  } while(false)
665
665
  };
@@ -706,14 +706,14 @@ part_ = ((part_ + "-") + readPart_())
706
706
  if(ff_core_String.String_any(part_, ((_w1) => {
707
707
  return ff_core_Char.Char_isAsciiUpper(_w1)
708
708
  }))) {
709
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain upper case letters: " + part_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
709
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain upper case letters: " + part_)), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
710
710
  };
711
711
  if((ff_core_String.String_any(part_, ((_w1) => {
712
712
  return (_w1 === 95)
713
713
  })) || ff_core_String.String_any(part_, ((_w1) => {
714
714
  return (_w1 === 46)
715
715
  })))) {
716
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain underscores or dots: " + part_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
716
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain underscores or dots: " + part_)), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
717
717
  };
718
718
  return part_
719
719
  }
@@ -1130,7 +1130,7 @@ const e_ = _1;
1130
1130
  return ff_compiler_Syntax.EAssignField(e_.at_, operator_, e_.record_, e_.field_, value_)
1131
1131
  }
1132
1132
  {
1133
- throw ff_core_Js.initializeError_(new Error(), 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, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1133
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Only variables and fields are assignable"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1134
1134
  }
1135
1135
  }
1136
1136
  }
@@ -1350,7 +1350,7 @@ let result_ = ff_compiler_Syntax.ECall(record_.at_, objectTarget_, effect_, [],
1350
1350
  for(let for_a = arguments_.first_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
1351
1351
  const argument_ = for_a[for_i];
1352
1352
  if(ff_core_Option.Option_isEmpty(argument_.name_)) {
1353
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(argument_.at_, "Expected a named argument"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1353
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(argument_.at_, "Expected a named argument"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1354
1354
  };
1355
1355
  const target_ = ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, result_, "with"), false);
1356
1356
  result_ = ff_compiler_Syntax.ECall(record_.at_, target_, effect_, [], [ff_compiler_Syntax.Argument(argument_.at_, ff_core_Option.None(), ff_compiler_Syntax.EString(argument_.at_, (("\"" + ff_core_Option.Option_grab(argument_.name_)) + "\""))), ff_compiler_Syntax.Argument(argument_.value_.at_, ff_core_Option.None(), argument_.value_)], [])
@@ -1359,7 +1359,7 @@ return result_
1359
1359
  }
1360
1360
  {
1361
1361
  const i_ = _1.value_;
1362
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError((arguments_.first_[i_] ?? ff_core_List.List_grab(arguments_.first_, i_)).at_, "Unexpected named argument"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1362
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError((arguments_.first_[i_] ?? ff_core_List.List_grab(arguments_.first_, i_)).at_, "Unexpected named argument"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1363
1363
  }
1364
1364
  }
1365
1365
  } else if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
@@ -1385,7 +1385,7 @@ return (!ff_core_Option.Option_isEmpty(_w1.name_))
1385
1385
  }))
1386
1386
  if(if_o.Some) {
1387
1387
  const argument_ = if_o.value_;
1388
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(argument_.at_, "Unexpected named argument"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1388
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(argument_.at_, "Unexpected named argument"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1389
1389
  }
1390
1390
  };
1391
1391
  const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, record_.at_);
@@ -1469,7 +1469,7 @@ return result_
1469
1469
  const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard());
1470
1470
  return ff_compiler_Syntax.EWildcard(ff_compiler_Token.Token_at(token_), 0)
1471
1471
  } else {
1472
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), ("Expected atom, got " + ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_current(self_)))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1472
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), ("Expected atom, got " + ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_current(self_)))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1473
1473
  }
1474
1474
  }
1475
1475
 
@@ -1592,7 +1592,7 @@ return p_
1592
1592
  }
1593
1593
  {
1594
1594
  const p_ = items_a[0].first_;
1595
- throw ff_core_Js.initializeError_(new Error(), 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, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1595
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(p_.at_, "Invalid pattern: ... is only allowed for the last element in a list"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1596
1596
  }
1597
1597
  }
1598
1598
  const items_ = ff_core_Array.new_();
@@ -1677,7 +1677,7 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
1677
1677
  if(((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && ff_compiler_Token.ff_core_Equal_Equal$ff_compiler_Token_TokenKind.equals_(kind_, ff_compiler_Token.LUpper())) && ff_compiler_Token.ff_core_Equal_Equal$ff_compiler_Token_TokenKind.equals_(c_.kind_, ff_compiler_Token.LLower()))) {
1678
1678
 
1679
1679
  } else {
1680
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + ", got ") + ff_compiler_Token.Token_raw(c_))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1680
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + ", got ") + ff_compiler_Token.Token_raw(c_))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1681
1681
  }
1682
1682
  };
1683
1683
  self_.offset_ += 1;
@@ -1690,14 +1690,14 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
1690
1690
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
1691
1691
 
1692
1692
  } else {
1693
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + " ") + value_) + ", got ") + ff_compiler_Token.Token_raw(c_))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1693
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((((("Expected " + ff_compiler_Token.ff_core_Show_Show$ff_compiler_Token_TokenKind.show_(kind_)) + " ") + value_) + ", got ") + ff_compiler_Token.Token_raw(c_))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1694
1694
  }
1695
1695
  };
1696
1696
  if((!ff_compiler_Token.Token_rawIs(c_, value_))) {
1697
1697
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
1698
1698
  self_.offset_ -= 1
1699
1699
  } else {
1700
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + value_) + " got ") + ff_compiler_Token.Token_raw(c_))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1700
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(c_), ((("Expected " + value_) + " got ") + ff_compiler_Token.Token_raw(c_))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1701
1701
  }
1702
1702
  };
1703
1703
  self_.offset_ += 1;
@@ -1728,7 +1728,7 @@ const moduleWithPackageInfo_ = ff_compiler_Parser.Parser_parseModuleWithPackageI
1728
1728
  const if_o = moduleWithPackageInfo_.packageInfo_
1729
1729
  if(if_o.Some) {
1730
1730
  const info_ = if_o.value_;
1731
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(info_.package_.at_, "Package and dependencies already declared in package.ff"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1731
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(info_.package_.at_, "Package and dependencies already declared in package.ff"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1732
1732
  }
1733
1733
  };
1734
1734
  return moduleWithPackageInfo_.module_
@@ -1754,7 +1754,7 @@ return p_
1754
1754
  })())
1755
1755
  : ff_compiler_Syntax.DPackage(location_, self_.moduleKey_.packagePair_, ff_compiler_Syntax.Version(location_, 0, 0, 0), ff_compiler_Syntax.TargetNames(self_.targetIsNode_, (!self_.targetIsNode_))));
1756
1756
  if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "package"))) {
1757
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Duplicate package definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1757
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Duplicate package definition"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1758
1758
  };
1759
1759
  const dependencies_ = ff_core_Array.new_();
1760
1760
  while((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
@@ -1802,11 +1802,11 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower())
1802
1802
  imports_.array.push(ff_compiler_Parser.Parser_parseImportDefinition(self_, self_.moduleKey_.packagePair_))
1803
1803
  }
1804
1804
  } else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "include"))) {
1805
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Includes must be at the top of the file or below 'package'"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1805
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Includes must be at the top of the file or below 'package'"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1806
1806
  } else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
1807
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Dependencies must be at the top of the file or below 'package'"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1807
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Dependencies must be at the top of the file or below 'package'"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1808
1808
  } else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "package"))) {
1809
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Package definition must be at the top of the file"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1809
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Package definition must be at the top of the file"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
1810
1810
  } else {
1811
1811
  ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LEnd())
1812
1812
  };
@@ -2050,9 +2050,9 @@ const variantFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parse
2050
2050
  if(((!allowMutable_) && ff_core_List.List_any(variantFields_, ((_w1) => {
2051
2051
  return _w1.mutable_
2052
2052
  })))) {
2053
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
2053
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
2054
2054
  return _w1.mutable_
2055
- }))).at_, "Only classes can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2055
+ }))).at_, "Only classes can have mutable fields"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2056
2056
  };
2057
2057
  variantsBuilder_.array.push(ff_compiler_Syntax.Variant(ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_raw(variantNameToken_), variantFields_));
2058
2058
  if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
@@ -2067,14 +2067,14 @@ return ff_core_Array.Array_toList(variantsBuilder_, 0, 9007199254740991)
2067
2067
  })()));
2068
2068
  if((newtype_ && (commonFields_.length !== 1))) {
2069
2069
  ff_core_Log.show_(commonFields_, ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Parameter));
2070
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(nameToken_), "Newtypes must have exactly one field"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2070
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(nameToken_), "Newtypes must have exactly one field"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2071
2071
  };
2072
2072
  if(((!allowMutable_) && ff_core_List.List_any(commonFields_, ((_w1) => {
2073
2073
  return _w1.mutable_
2074
2074
  })))) {
2075
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
2075
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
2076
2076
  return _w1.mutable_
2077
- }))).at_, "Only classes and capabilities can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2077
+ }))).at_, "Only classes and capabilities can have mutable fields"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2078
2078
  };
2079
2079
  const generics_ = [...effectParameter_, ...poly_.generics_];
2080
2080
  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_);
@@ -2149,7 +2149,7 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
2149
2149
  do {
2150
2150
  const _1 = ff_compiler_Token.Token_raw(token_);
2151
2151
  if(_1 === "node" && targets_.node_) {
2152
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2152
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2153
2153
  }
2154
2154
  if(_1 === "node") {
2155
2155
  targets_ = (((_c) => {
@@ -2158,7 +2158,7 @@ return ff_compiler_Syntax.TargetNames(true, _c.browser_)
2158
2158
  break
2159
2159
  }
2160
2160
  if(_1 === "browser" && targets_.browser_) {
2161
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2161
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2162
2162
  }
2163
2163
  if(_1 === "browser") {
2164
2164
  targets_ = (((_c) => {
@@ -2168,7 +2168,7 @@ break
2168
2168
  }
2169
2169
  {
2170
2170
  const t_ = _1;
2171
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), ("Unexpected target: " + t_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2171
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), ("Unexpected target: " + t_)), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2172
2172
  }
2173
2173
  } while(false)
2174
2174
  };
@@ -2215,14 +2215,14 @@ part_ = ((part_ + "-") + readPart_())
2215
2215
  if(ff_core_String.String_any(part_, ((_w1) => {
2216
2216
  return ff_core_Char.Char_isAsciiUpper(_w1)
2217
2217
  }))) {
2218
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain upper case letters: " + part_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2218
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain upper case letters: " + part_)), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2219
2219
  };
2220
2220
  if((ff_core_String.String_any(part_, ((_w1) => {
2221
2221
  return (_w1 === 95)
2222
2222
  })) || ff_core_String.String_any(part_, ((_w1) => {
2223
2223
  return (_w1 === 46)
2224
2224
  })))) {
2225
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain underscores or dots: " + part_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2225
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(at_, ("Package names and paths must not contain underscores or dots: " + part_)), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2226
2226
  };
2227
2227
  return part_
2228
2228
  }
@@ -2639,7 +2639,7 @@ const e_ = _1;
2639
2639
  return ff_compiler_Syntax.EAssignField(e_.at_, operator_, e_.record_, e_.field_, value_)
2640
2640
  }
2641
2641
  {
2642
- throw ff_core_Js.initializeError_(new Error(), 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, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2642
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Only variables and fields are assignable"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2643
2643
  }
2644
2644
  }
2645
2645
  }
@@ -2859,7 +2859,7 @@ let result_ = ff_compiler_Syntax.ECall(record_.at_, objectTarget_, effect_, [],
2859
2859
  for(let for_a = arguments_.first_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
2860
2860
  const argument_ = for_a[for_i];
2861
2861
  if(ff_core_Option.Option_isEmpty(argument_.name_)) {
2862
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(argument_.at_, "Expected a named argument"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2862
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(argument_.at_, "Expected a named argument"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2863
2863
  };
2864
2864
  const target_ = ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, result_, "with"), false);
2865
2865
  result_ = ff_compiler_Syntax.ECall(record_.at_, target_, effect_, [], [ff_compiler_Syntax.Argument(argument_.at_, ff_core_Option.None(), ff_compiler_Syntax.EString(argument_.at_, (("\"" + ff_core_Option.Option_grab(argument_.name_)) + "\""))), ff_compiler_Syntax.Argument(argument_.value_.at_, ff_core_Option.None(), argument_.value_)], [])
@@ -2868,7 +2868,7 @@ return result_
2868
2868
  }
2869
2869
  {
2870
2870
  const i_ = _1.value_;
2871
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError((arguments_.first_[i_] ?? ff_core_List.List_grab(arguments_.first_, i_)).at_, "Unexpected named argument"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2871
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError((arguments_.first_[i_] ?? ff_core_List.List_grab(arguments_.first_, i_)).at_, "Unexpected named argument"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2872
2872
  }
2873
2873
  }
2874
2874
  } else if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
@@ -2894,7 +2894,7 @@ return (!ff_core_Option.Option_isEmpty(_w1.name_))
2894
2894
  }))
2895
2895
  if(if_o.Some) {
2896
2896
  const argument_ = if_o.value_;
2897
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(argument_.at_, "Unexpected named argument"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2897
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(argument_.at_, "Unexpected named argument"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2898
2898
  }
2899
2899
  };
2900
2900
  const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, record_.at_);
@@ -2978,7 +2978,7 @@ return result_
2978
2978
  const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard());
2979
2979
  return ff_compiler_Syntax.EWildcard(ff_compiler_Token.Token_at(token_), 0)
2980
2980
  } else {
2981
- throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), ("Expected atom, got " + ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_current(self_)))), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2981
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), ("Expected atom, got " + ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_current(self_)))), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
2982
2982
  }
2983
2983
  }
2984
2984
 
@@ -3101,7 +3101,7 @@ return p_
3101
3101
  }
3102
3102
  {
3103
3103
  const p_ = items_a[0].first_;
3104
- throw ff_core_Js.initializeError_(new Error(), 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, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
3104
+ throw ff_core_Js.initializeError_(ff_compiler_Syntax.CompileError(p_.at_, "Invalid pattern: ... is only allowed for the last element in a list"), new Error(), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError, ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_CompileError)
3105
3105
  }
3106
3106
  }
3107
3107
  const items_ = ff_core_Array.new_();
@@ -3259,7 +3259,7 @@ serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_
3259
3259
  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_))
3260
3260
  }
3261
3261
  {
3262
- throw ff_core_Js.initializeError_(new Error(), ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException, ff_core_Serializable.ff_core_Show_Show$ff_core_Serializable_DeserializationChecksumException)
3262
+ throw ff_core_Js.initializeError_(ff_core_Serializable.DeserializationChecksumException(), new Error(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException, ff_core_Serializable.ff_core_Show_Show$ff_core_Serializable_DeserializationChecksumException)
3263
3263
  }
3264
3264
  }
3265
3265
  },
@@ -3287,7 +3287,7 @@ serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_
3287
3287
  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_))
3288
3288
  }
3289
3289
  {
3290
- throw ff_core_Js.initializeError_(new Error(), ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException, ff_core_Serializable.ff_core_Show_Show$ff_core_Serializable_DeserializationChecksumException)
3290
+ throw ff_core_Js.initializeError_(ff_core_Serializable.DeserializationChecksumException(), new Error(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException, ff_core_Serializable.ff_core_Show_Show$ff_core_Serializable_DeserializationChecksumException)
3291
3291
  }
3292
3292
  }
3293
3293
  },