firefly-compiler 0.5.77 → 0.5.78

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 (156) hide show
  1. package/bin/firefly.mjs +1 -1
  2. package/compiler/Compiler.ff +7 -3
  3. package/compiler/JsEmitter.ff +1564 -623
  4. package/compiler/Main.ff +1 -1
  5. package/compiler/SourceMap.ff +149 -0
  6. package/core/Buffer.ff +2 -1
  7. package/core/BuildSystem.ff +3 -1
  8. package/core/Js.ff +6 -0
  9. package/firefly.sh +1 -1
  10. package/fireflysite/Main.ff +2 -1
  11. package/output/js/ff/compiler/Builder.mjs +4 -44
  12. package/output/js/ff/compiler/Builder.mjs.map +181 -0
  13. package/output/js/ff/compiler/Compiler.mjs +23 -16
  14. package/output/js/ff/compiler/Compiler.mjs.map +155 -0
  15. package/output/js/ff/compiler/Dependencies.mjs +12 -14
  16. package/output/js/ff/compiler/Dependencies.mjs.map +128 -0
  17. package/output/js/ff/compiler/DependencyLock.mjs +1 -4
  18. package/output/js/ff/compiler/DependencyLock.mjs.map +22 -0
  19. package/output/js/ff/compiler/Deriver.mjs +10 -11
  20. package/output/js/ff/compiler/Deriver.mjs.map +204 -0
  21. package/output/js/ff/compiler/Dictionaries.mjs +12 -13
  22. package/output/js/ff/compiler/Dictionaries.mjs.map +183 -0
  23. package/output/js/ff/compiler/Environment.mjs +24 -27
  24. package/output/js/ff/compiler/Environment.mjs.map +141 -0
  25. package/output/js/ff/compiler/Inference.mjs +83 -92
  26. package/output/js/ff/compiler/Inference.mjs.map +355 -0
  27. package/output/js/ff/compiler/JsEmitter.mjs +3689 -1687
  28. package/output/js/ff/compiler/JsEmitter.mjs.map +423 -0
  29. package/output/js/ff/compiler/JsImporter.mjs +9 -12
  30. package/output/js/ff/compiler/JsImporter.mjs.map +52 -0
  31. package/output/js/ff/compiler/LspHook.mjs +17 -18
  32. package/output/js/ff/compiler/LspHook.mjs.map +140 -0
  33. package/output/js/ff/compiler/Main.mjs +57 -67
  34. package/output/js/ff/compiler/Main.mjs.map +226 -0
  35. package/output/js/ff/compiler/ModuleCache.mjs +1 -4
  36. package/output/js/ff/compiler/ModuleCache.mjs.map +82 -0
  37. package/output/js/ff/compiler/Parser.mjs +54 -57
  38. package/output/js/ff/compiler/Parser.mjs.map +406 -0
  39. package/output/js/ff/compiler/Patterns.mjs +19 -22
  40. package/output/js/ff/compiler/Patterns.mjs.map +119 -0
  41. package/output/js/ff/compiler/Resolver.mjs +40 -39
  42. package/output/js/ff/compiler/Resolver.mjs.map +294 -0
  43. package/output/js/ff/compiler/SourceMap.mjs +402 -0
  44. package/output/js/ff/compiler/SourceMap.mjs.map +83 -0
  45. package/output/js/ff/compiler/Substitution.mjs +1 -4
  46. package/output/js/ff/compiler/Substitution.mjs.map +138 -0
  47. package/output/js/ff/compiler/Syntax.mjs +250 -249
  48. package/output/js/ff/compiler/Syntax.mjs.map +351 -0
  49. package/output/js/ff/compiler/Token.mjs +17 -22
  50. package/output/js/ff/compiler/Token.mjs.map +113 -0
  51. package/output/js/ff/compiler/Tokenizer.mjs +5 -12
  52. package/output/js/ff/compiler/Tokenizer.mjs.map +101 -0
  53. package/output/js/ff/compiler/Unification.mjs +32 -33
  54. package/output/js/ff/compiler/Unification.mjs.map +135 -0
  55. package/output/js/ff/compiler/Wildcards.mjs +1 -4
  56. package/output/js/ff/compiler/Wildcards.mjs.map +69 -0
  57. package/output/js/ff/compiler/Workspace.mjs +17 -16
  58. package/output/js/ff/compiler/Workspace.mjs.map +96 -0
  59. package/output/js/ff/core/Any.mjs +1 -4
  60. package/output/js/ff/core/Any.mjs.map +21 -0
  61. package/output/js/ff/core/Array.mjs +14 -15
  62. package/output/js/ff/core/Array.mjs.map +90 -0
  63. package/output/js/ff/core/AssetSystem.mjs +1 -4
  64. package/output/js/ff/core/AssetSystem.mjs.map +56 -0
  65. package/output/js/ff/core/Atomic.mjs +1 -4
  66. package/output/js/ff/core/Atomic.mjs.map +24 -0
  67. package/output/js/ff/core/Bool.mjs +4 -9
  68. package/output/js/ff/core/Bool.mjs.map +19 -0
  69. package/output/js/ff/core/BrowserSystem.mjs +1 -8
  70. package/output/js/ff/core/BrowserSystem.mjs.map +47 -0
  71. package/output/js/ff/core/Buffer.mjs +18 -17
  72. package/output/js/ff/core/Buffer.mjs.map +123 -0
  73. package/output/js/ff/core/BuildSystem.mjs +7 -10
  74. package/output/js/ff/core/BuildSystem.mjs.map +87 -0
  75. package/output/js/ff/core/Channel.mjs +1 -4
  76. package/output/js/ff/core/Channel.mjs.map +67 -0
  77. package/output/js/ff/core/Char.mjs +1 -8
  78. package/output/js/ff/core/Char.mjs.map +21 -0
  79. package/output/js/ff/core/Core.mjs +5 -8
  80. package/output/js/ff/core/Core.mjs.map +40 -0
  81. package/output/js/ff/core/Crypto.mjs +1 -4
  82. package/output/js/ff/core/Crypto.mjs.map +65 -0
  83. package/output/js/ff/core/Date.mjs +8 -7
  84. package/output/js/ff/core/Date.mjs.map +168 -0
  85. package/output/js/ff/core/Duration.mjs +4 -9
  86. package/output/js/ff/core/Duration.mjs.map +18 -0
  87. package/output/js/ff/core/Equal.mjs +9 -14
  88. package/output/js/ff/core/Equal.mjs.map +22 -0
  89. package/output/js/ff/core/Error.mjs +1 -8
  90. package/output/js/ff/core/Error.mjs.map +21 -0
  91. package/output/js/ff/core/FileHandle.mjs +1 -8
  92. package/output/js/ff/core/FileHandle.mjs.map +32 -0
  93. package/output/js/ff/core/Float.mjs +4 -5
  94. package/output/js/ff/core/Float.mjs.map +93 -0
  95. package/output/js/ff/core/HttpClient.mjs +1 -4
  96. package/output/js/ff/core/HttpClient.mjs.map +62 -0
  97. package/output/js/ff/core/Int.mjs +4 -9
  98. package/output/js/ff/core/Int.mjs.map +49 -0
  99. package/output/js/ff/core/IntMap.mjs +3 -6
  100. package/output/js/ff/core/IntMap.mjs.map +52 -0
  101. package/output/js/ff/core/Js.mjs +13 -8
  102. package/output/js/ff/core/Js.mjs.map +121 -0
  103. package/output/js/ff/core/JsSystem.mjs +1 -8
  104. package/output/js/ff/core/JsSystem.mjs.map +59 -0
  105. package/output/js/ff/core/JsValue.mjs +23 -42
  106. package/output/js/ff/core/JsValue.mjs.map +155 -0
  107. package/output/js/ff/core/Json.mjs +25 -26
  108. package/output/js/ff/core/Json.mjs.map +134 -0
  109. package/output/js/ff/core/List.mjs +11 -12
  110. package/output/js/ff/core/List.mjs.map +123 -0
  111. package/output/js/ff/core/Lock.mjs +7 -14
  112. package/output/js/ff/core/Lock.mjs.map +52 -0
  113. package/output/js/ff/core/Log.mjs +1 -8
  114. package/output/js/ff/core/Log.mjs.map +26 -0
  115. package/output/js/ff/core/Map.mjs +6 -7
  116. package/output/js/ff/core/Map.mjs.map +67 -0
  117. package/output/js/ff/core/NodeSystem.mjs +11 -14
  118. package/output/js/ff/core/NodeSystem.mjs.map +137 -0
  119. package/output/js/ff/core/Nothing.mjs +1 -10
  120. package/output/js/ff/core/Nothing.mjs.map +11 -0
  121. package/output/js/ff/core/Option.mjs +10 -15
  122. package/output/js/ff/core/Option.mjs.map +67 -0
  123. package/output/js/ff/core/Ordering.mjs +12 -13
  124. package/output/js/ff/core/Ordering.mjs.map +48 -0
  125. package/output/js/ff/core/Pair.mjs +8 -13
  126. package/output/js/ff/core/Pair.mjs.map +48 -0
  127. package/output/js/ff/core/Path.mjs +5 -14
  128. package/output/js/ff/core/Path.mjs.map +178 -0
  129. package/output/js/ff/core/Queue.mjs +1 -4
  130. package/output/js/ff/core/Queue.mjs.map +45 -0
  131. package/output/js/ff/core/Random.mjs +1 -4
  132. package/output/js/ff/core/Random.mjs.map +79 -0
  133. package/output/js/ff/core/RbMap.mjs +1 -16
  134. package/output/js/ff/core/RbMap.mjs.map +92 -0
  135. package/output/js/ff/core/Serializable.mjs +17 -22
  136. package/output/js/ff/core/Serializable.mjs.map +73 -0
  137. package/output/js/ff/core/Set.mjs +6 -7
  138. package/output/js/ff/core/Set.mjs.map +45 -0
  139. package/output/js/ff/core/Show.mjs +11 -20
  140. package/output/js/ff/core/Show.mjs.map +29 -0
  141. package/output/js/ff/core/SourceLocation.mjs +7 -8
  142. package/output/js/ff/core/SourceLocation.mjs.map +41 -0
  143. package/output/js/ff/core/Stream.mjs +1 -4
  144. package/output/js/ff/core/Stream.mjs.map +92 -0
  145. package/output/js/ff/core/String.mjs +14 -19
  146. package/output/js/ff/core/String.mjs.map +106 -0
  147. package/output/js/ff/core/StringMap.mjs +3 -6
  148. package/output/js/ff/core/StringMap.mjs.map +52 -0
  149. package/output/js/ff/core/Task.mjs +1 -8
  150. package/output/js/ff/core/Task.mjs.map +79 -0
  151. package/output/js/ff/core/Try.mjs +3 -6
  152. package/output/js/ff/core/Try.mjs.map +41 -0
  153. package/output/js/ff/core/Unit.mjs +5 -12
  154. package/output/js/ff/core/Unit.mjs.map +18 -0
  155. package/package.json +1 -1
  156. package/vscode/package.json +1 -1
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  import * as ff_compiler_Parser from "../../ff/compiler/Parser.mjs"
4
2
 
5
3
  import * as ff_compiler_LspHook from "../../ff/compiler/LspHook.mjs"
@@ -170,7 +168,7 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
170
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()))) {
171
169
 
172
170
  } else {
173
- ff_core_Core.throw_(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_(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)
174
172
  }
175
173
  };
176
174
  self_.offset_ += 1;
@@ -183,14 +181,14 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
183
181
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
184
182
 
185
183
  } else {
186
- ff_core_Core.throw_(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_(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)
187
185
  }
188
186
  };
189
187
  if((!ff_compiler_Token.Token_rawIs(c_, value_))) {
190
188
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
191
189
  self_.offset_ -= 1
192
190
  } else {
193
- ff_core_Core.throw_(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_(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)
194
192
  }
195
193
  };
196
194
  self_.offset_ += 1;
@@ -221,7 +219,7 @@ const moduleWithPackageInfo_ = ff_compiler_Parser.Parser_parseModuleWithPackageI
221
219
  const if_o = moduleWithPackageInfo_.packageInfo_
222
220
  if(if_o.Some) {
223
221
  const info_ = if_o.value_;
224
- ff_core_Core.throw_(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_(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)
225
223
  }
226
224
  };
227
225
  return moduleWithPackageInfo_.module_
@@ -247,7 +245,7 @@ return p_
247
245
  })()
248
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_))));
249
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"))) {
250
- ff_core_Core.throw_(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_(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)
251
249
  };
252
250
  const dependencies_ = ff_core_Array.new_();
253
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"))) {
@@ -295,11 +293,11 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower())
295
293
  imports_.array.push(ff_compiler_Parser.Parser_parseImportDefinition(self_, self_.moduleKey_.packagePair_))
296
294
  }
297
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"))) {
298
- ff_core_Core.throw_(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_(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)
299
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"))) {
300
- ff_core_Core.throw_(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_(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)
301
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"))) {
302
- ff_core_Core.throw_(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_(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)
303
301
  } else {
304
302
  ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LEnd())
305
303
  };
@@ -543,7 +541,7 @@ const variantFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parse
543
541
  if(((!allowMutable_) && ff_core_List.List_any(variantFields_, ((_w1) => {
544
542
  return _w1.mutable_
545
543
  })))) {
546
- ff_core_Core.throw_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
544
+ throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
547
545
  return _w1.mutable_
548
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)
549
547
  };
@@ -560,12 +558,12 @@ return ff_core_Array.Array_toList(variantsBuilder_, 0, 9007199254740991)
560
558
  })());
561
559
  if((newtype_ && (commonFields_.length !== 1))) {
562
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));
563
- ff_core_Core.throw_(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_(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)
564
562
  };
565
563
  if(((!allowMutable_) && ff_core_List.List_any(commonFields_, ((_w1) => {
566
564
  return _w1.mutable_
567
565
  })))) {
568
- ff_core_Core.throw_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
566
+ throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
569
567
  return _w1.mutable_
570
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)
571
569
  };
@@ -642,8 +640,7 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
642
640
  do {
643
641
  const _1 = ff_compiler_Token.Token_raw(token_);
644
642
  if(_1 === "node" && targets_.node_) {
645
- ff_core_Core.throw_(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)
646
- break
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)
647
644
  }
648
645
  if(_1 === "node") {
649
646
  targets_ = (((_c) => {
@@ -652,8 +649,7 @@ return ff_compiler_Syntax.TargetNames(true, _c.browser_)
652
649
  break
653
650
  }
654
651
  if(_1 === "browser" && targets_.browser_) {
655
- ff_core_Core.throw_(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)
656
- break
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)
657
653
  }
658
654
  if(_1 === "browser") {
659
655
  targets_ = (((_c) => {
@@ -663,7 +659,7 @@ break
663
659
  }
664
660
  {
665
661
  const t_ = _1;
666
- ff_core_Core.throw_(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_(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)
667
663
  }
668
664
  } while(false)
669
665
  };
@@ -710,14 +706,14 @@ part_ = ((part_ + "-") + readPart_())
710
706
  if(ff_core_String.String_any(part_, ((_w1) => {
711
707
  return ff_core_Char.Char_isAsciiUpper(_w1)
712
708
  }))) {
713
- ff_core_Core.throw_(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_(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)
714
710
  };
715
711
  if((ff_core_String.String_any(part_, ((_w1) => {
716
712
  return (_w1 === 95)
717
713
  })) || ff_core_String.String_any(part_, ((_w1) => {
718
714
  return (_w1 === 46)
719
715
  })))) {
720
- ff_core_Core.throw_(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_(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)
721
717
  };
722
718
  return part_
723
719
  }
@@ -1134,7 +1130,7 @@ const e_ = _1;
1134
1130
  return ff_compiler_Syntax.EAssignField(e_.at_, operator_, e_.record_, e_.field_, value_)
1135
1131
  }
1136
1132
  {
1137
- return ff_core_Core.throw_(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_(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)
1138
1134
  }
1139
1135
  }
1140
1136
  }
@@ -1354,7 +1350,7 @@ let result_ = ff_compiler_Syntax.ECall(record_.at_, objectTarget_, effect_, [],
1354
1350
  for(let for_a = arguments_.first_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
1355
1351
  const argument_ = for_a[for_i];
1356
1352
  if(ff_core_Option.Option_isEmpty(argument_.name_)) {
1357
- ff_core_Core.throw_(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_(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)
1358
1354
  };
1359
1355
  const target_ = ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, result_, "with"), false);
1360
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_)], [])
@@ -1363,7 +1359,7 @@ return result_
1363
1359
  }
1364
1360
  {
1365
1361
  const i_ = _1.value_;
1366
- return ff_core_Core.throw_(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_(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)
1367
1363
  }
1368
1364
  }
1369
1365
  } else if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
@@ -1389,7 +1385,7 @@ return (!ff_core_Option.Option_isEmpty(_w1.name_))
1389
1385
  }))
1390
1386
  if(if_o.Some) {
1391
1387
  const argument_ = if_o.value_;
1392
- ff_core_Core.throw_(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_(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)
1393
1389
  }
1394
1390
  };
1395
1391
  const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, record_.at_);
@@ -1473,7 +1469,7 @@ return result_
1473
1469
  const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard());
1474
1470
  return ff_compiler_Syntax.EWildcard(ff_compiler_Token.Token_at(token_), 0)
1475
1471
  } else {
1476
- return ff_core_Core.throw_(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_(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)
1477
1473
  }
1478
1474
  }
1479
1475
 
@@ -1596,7 +1592,7 @@ return p_
1596
1592
  }
1597
1593
  {
1598
1594
  const p_ = items_a[0].first_;
1599
- return ff_core_Core.throw_(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_(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)
1600
1596
  }
1601
1597
  }
1602
1598
  const items_ = ff_core_Array.new_();
@@ -1681,7 +1677,7 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
1681
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()))) {
1682
1678
 
1683
1679
  } else {
1684
- ff_core_Core.throw_(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_(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)
1685
1681
  }
1686
1682
  };
1687
1683
  self_.offset_ += 1;
@@ -1694,14 +1690,14 @@ if(ff_core_Equal.notEquals_(c_.kind_, kind_, ff_compiler_Token.ff_core_Equal_Equ
1694
1690
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
1695
1691
 
1696
1692
  } else {
1697
- ff_core_Core.throw_(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_(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)
1698
1694
  }
1699
1695
  };
1700
1696
  if((!ff_compiler_Token.Token_rawIs(c_, value_))) {
1701
1697
  if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (((value_ === ")") || (value_ === "]")) || (value_ === "}")))) {
1702
1698
  self_.offset_ -= 1
1703
1699
  } else {
1704
- ff_core_Core.throw_(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_(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)
1705
1701
  }
1706
1702
  };
1707
1703
  self_.offset_ += 1;
@@ -1732,7 +1728,7 @@ const moduleWithPackageInfo_ = ff_compiler_Parser.Parser_parseModuleWithPackageI
1732
1728
  const if_o = moduleWithPackageInfo_.packageInfo_
1733
1729
  if(if_o.Some) {
1734
1730
  const info_ = if_o.value_;
1735
- ff_core_Core.throw_(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_(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)
1736
1732
  }
1737
1733
  };
1738
1734
  return moduleWithPackageInfo_.module_
@@ -1758,7 +1754,7 @@ return p_
1758
1754
  })())
1759
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_))));
1760
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"))) {
1761
- ff_core_Core.throw_(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_(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)
1762
1758
  };
1763
1759
  const dependencies_ = ff_core_Array.new_();
1764
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"))) {
@@ -1806,11 +1802,11 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower())
1806
1802
  imports_.array.push(ff_compiler_Parser.Parser_parseImportDefinition(self_, self_.moduleKey_.packagePair_))
1807
1803
  }
1808
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"))) {
1809
- ff_core_Core.throw_(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_(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)
1810
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"))) {
1811
- ff_core_Core.throw_(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_(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)
1812
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"))) {
1813
- ff_core_Core.throw_(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_(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)
1814
1810
  } else {
1815
1811
  ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LEnd())
1816
1812
  };
@@ -2054,7 +2050,7 @@ const variantFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parse
2054
2050
  if(((!allowMutable_) && ff_core_List.List_any(variantFields_, ((_w1) => {
2055
2051
  return _w1.mutable_
2056
2052
  })))) {
2057
- ff_core_Core.throw_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
2053
+ throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(variantFields_, ((_w1) => {
2058
2054
  return _w1.mutable_
2059
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)
2060
2056
  };
@@ -2071,12 +2067,12 @@ return ff_core_Array.Array_toList(variantsBuilder_, 0, 9007199254740991)
2071
2067
  })()));
2072
2068
  if((newtype_ && (commonFields_.length !== 1))) {
2073
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));
2074
- ff_core_Core.throw_(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_(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)
2075
2071
  };
2076
2072
  if(((!allowMutable_) && ff_core_List.List_any(commonFields_, ((_w1) => {
2077
2073
  return _w1.mutable_
2078
2074
  })))) {
2079
- ff_core_Core.throw_(ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
2075
+ throw ff_core_Js.initializeError_(new Error(), ff_compiler_Syntax.CompileError(ff_core_Option.Option_grab(ff_core_List.List_find(commonFields_, ((_w1) => {
2080
2076
  return _w1.mutable_
2081
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)
2082
2078
  };
@@ -2153,8 +2149,7 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
2153
2149
  do {
2154
2150
  const _1 = ff_compiler_Token.Token_raw(token_);
2155
2151
  if(_1 === "node" && targets_.node_) {
2156
- ff_core_Core.throw_(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)
2157
- break
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)
2158
2153
  }
2159
2154
  if(_1 === "node") {
2160
2155
  targets_ = (((_c) => {
@@ -2163,8 +2158,7 @@ return ff_compiler_Syntax.TargetNames(true, _c.browser_)
2163
2158
  break
2164
2159
  }
2165
2160
  if(_1 === "browser" && targets_.browser_) {
2166
- ff_core_Core.throw_(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)
2167
- break
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)
2168
2162
  }
2169
2163
  if(_1 === "browser") {
2170
2164
  targets_ = (((_c) => {
@@ -2174,7 +2168,7 @@ break
2174
2168
  }
2175
2169
  {
2176
2170
  const t_ = _1;
2177
- ff_core_Core.throw_(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_(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)
2178
2172
  }
2179
2173
  } while(false)
2180
2174
  };
@@ -2221,14 +2215,14 @@ part_ = ((part_ + "-") + readPart_())
2221
2215
  if(ff_core_String.String_any(part_, ((_w1) => {
2222
2216
  return ff_core_Char.Char_isAsciiUpper(_w1)
2223
2217
  }))) {
2224
- ff_core_Core.throw_(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_(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)
2225
2219
  };
2226
2220
  if((ff_core_String.String_any(part_, ((_w1) => {
2227
2221
  return (_w1 === 95)
2228
2222
  })) || ff_core_String.String_any(part_, ((_w1) => {
2229
2223
  return (_w1 === 46)
2230
2224
  })))) {
2231
- ff_core_Core.throw_(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_(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)
2232
2226
  };
2233
2227
  return part_
2234
2228
  }
@@ -2645,7 +2639,7 @@ const e_ = _1;
2645
2639
  return ff_compiler_Syntax.EAssignField(e_.at_, operator_, e_.record_, e_.field_, value_)
2646
2640
  }
2647
2641
  {
2648
- return ff_core_Core.throw_(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_(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)
2649
2643
  }
2650
2644
  }
2651
2645
  }
@@ -2865,7 +2859,7 @@ let result_ = ff_compiler_Syntax.ECall(record_.at_, objectTarget_, effect_, [],
2865
2859
  for(let for_a = arguments_.first_, for_i = 0, for_l = for_a.length; for_i < for_l; for_i++) {
2866
2860
  const argument_ = for_a[for_i];
2867
2861
  if(ff_core_Option.Option_isEmpty(argument_.name_)) {
2868
- ff_core_Core.throw_(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_(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)
2869
2863
  };
2870
2864
  const target_ = ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, result_, "with"), false);
2871
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_)], [])
@@ -2874,7 +2868,7 @@ return result_
2874
2868
  }
2875
2869
  {
2876
2870
  const i_ = _1.value_;
2877
- return ff_core_Core.throw_(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_(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)
2878
2872
  }
2879
2873
  }
2880
2874
  } else if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
@@ -2900,7 +2894,7 @@ return (!ff_core_Option.Option_isEmpty(_w1.name_))
2900
2894
  }))
2901
2895
  if(if_o.Some) {
2902
2896
  const argument_ = if_o.value_;
2903
- ff_core_Core.throw_(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_(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)
2904
2898
  }
2905
2899
  };
2906
2900
  const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, record_.at_);
@@ -2984,7 +2978,7 @@ return result_
2984
2978
  const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard());
2985
2979
  return ff_compiler_Syntax.EWildcard(ff_compiler_Token.Token_at(token_), 0)
2986
2980
  } else {
2987
- return ff_core_Core.throw_(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_(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)
2988
2982
  }
2989
2983
  }
2990
2984
 
@@ -3107,7 +3101,7 @@ return p_
3107
3101
  }
3108
3102
  {
3109
3103
  const p_ = items_a[0].first_;
3110
- return ff_core_Core.throw_(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_(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)
3111
3105
  }
3112
3106
  }
3113
3107
  const items_ = ff_core_Array.new_();
@@ -3152,7 +3146,7 @@ return ff_core_Any.internalAnyTag_((("ff:compiler/Parser.Poly" + "[") + "]"))
3152
3146
  },
3153
3147
  async anyTag_$($task) {
3154
3148
  return ff_core_Any.internalAnyTag_((("ff:compiler/Parser.Poly" + "[") + "]"))
3155
- }
3149
+ },
3156
3150
  };
3157
3151
 
3158
3152
  export const ff_core_Show_Show$ff_compiler_Parser_Poly = {
@@ -3169,7 +3163,7 @@ const value_a = value_;
3169
3163
  const z_ = value_a;
3170
3164
  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_)) + ")")
3171
3165
  }
3172
- }
3166
+ },
3173
3167
  };
3174
3168
 
3175
3169
  export const ff_core_Equal_Equal$ff_compiler_Parser_Poly = {
@@ -3192,7 +3186,7 @@ return true
3192
3186
  {
3193
3187
  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_))
3194
3188
  }
3195
- }
3189
+ },
3196
3190
  };
3197
3191
 
3198
3192
  export const ff_core_Ordering_Order$ff_compiler_Parser_Poly = {
@@ -3237,7 +3231,7 @@ return ff_core_Ordering.OrderingSame()
3237
3231
  }
3238
3232
  return
3239
3233
  }
3240
- }
3234
+ },
3241
3235
  };
3242
3236
 
3243
3237
  export const ff_core_Serializable_Serializable$ff_compiler_Parser_Poly = {
@@ -3265,7 +3259,7 @@ serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_
3265
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_))
3266
3260
  }
3267
3261
  {
3268
- return ff_core_Core.throw_(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_(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)
3269
3263
  }
3270
3264
  }
3271
3265
  },
@@ -3293,8 +3287,11 @@ serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_
3293
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_))
3294
3288
  }
3295
3289
  {
3296
- return ff_core_Core.throw_(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)
3297
- }
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)
3298
3291
  }
3299
3292
  }
3293
+ },
3300
3294
  };
3295
+
3296
+
3297
+ //# sourceMappingURL=Parser.mjs.map