firefly-compiler 0.4.21 → 0.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/Dictionaries.ff +10 -10
- package/compiler/Inference.ff +167 -148
- package/compiler/JsEmitter.ff +2 -2
- package/compiler/LspHook.ff +2 -1
- package/compiler/Main.ff +12 -4
- package/compiler/Patterns.ff +1 -1
- package/compiler/Resolver.ff +154 -146
- package/compiler/Substitution.ff +2 -2
- package/compiler/Unification.ff +1 -1
- package/core/Map.ff +8 -0
- package/core/Set.ff +7 -0
- package/lsp/Handler.ff +11 -3
- package/output/js/ff/compiler/Dictionaries.mjs +18 -18
- package/output/js/ff/compiler/Inference.mjs +96 -72
- package/output/js/ff/compiler/JsEmitter.mjs +8 -6
- package/output/js/ff/compiler/Main.mjs +16 -5
- package/output/js/ff/compiler/Patterns.mjs +4 -4
- package/output/js/ff/compiler/Resolver.mjs +412 -224
- package/output/js/ff/compiler/Substitution.mjs +4 -4
- package/output/js/ff/compiler/Unification.mjs +4 -4
- package/output/js/ff/core/Map.mjs +26 -0
- package/output/js/ff/core/Set.mjs +16 -0
- package/package.json +1 -1
- package/vscode/package.json +1 -1
- package/bin/firefly.mjs +0 -2
- package/guide/Main.ff +0 -22
|
@@ -97,8 +97,8 @@ import * as ff_core_Try from "../../ff/core/Try.mjs"
|
|
|
97
97
|
import * as ff_core_Unit from "../../ff/core/Unit.mjs"
|
|
98
98
|
|
|
99
99
|
// type Resolver
|
|
100
|
-
export function Resolver(variables_, variableLocations_, variants_, types_, typeGenerics_, typeLocations_, asyncTypes_, typeParameters_, traits_, traitLocations_, state_, lspHook_) {
|
|
101
|
-
return {variables_, variableLocations_, variants_, types_, typeGenerics_, typeLocations_, asyncTypes_, typeParameters_, traits_, traitLocations_, state_, lspHook_};
|
|
100
|
+
export function Resolver(variables_, variableLocations_, asVariables_, variants_, types_, typeGenerics_, typeLocations_, asyncTypes_, typeParameters_, traits_, traitLocations_, state_, lspHook_) {
|
|
101
|
+
return {variables_, variableLocations_, asVariables_, variants_, types_, typeGenerics_, typeLocations_, asyncTypes_, typeParameters_, traits_, traitLocations_, state_, lspHook_};
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
// type ResolverState
|
|
@@ -106,14 +106,19 @@ export function ResolverState(nextUnificationVariableIndex_) {
|
|
|
106
106
|
return {nextUnificationVariableIndex_};
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
// type CaseVariable
|
|
110
|
+
export function CaseVariable(at_, name_, asBound_) {
|
|
111
|
+
return {at_, name_, asBound_};
|
|
112
|
+
}
|
|
113
|
+
|
|
109
114
|
|
|
110
115
|
|
|
111
116
|
export function make_(packagePair_, moduleName_, lspHook_) {
|
|
112
|
-
return ff_compiler_Resolver.Resolver(ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_compiler_Resolver.ResolverState(2), lspHook_)
|
|
117
|
+
return ff_compiler_Resolver.Resolver(ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_compiler_Resolver.ResolverState(2), lspHook_)
|
|
113
118
|
}
|
|
114
119
|
|
|
115
120
|
export async function make_$(packagePair_, moduleName_, lspHook_, $task) {
|
|
116
|
-
return ff_compiler_Resolver.Resolver(ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_compiler_Resolver.ResolverState(2), lspHook_)
|
|
121
|
+
return ff_compiler_Resolver.Resolver(ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toMap([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_compiler_Resolver.ResolverState(2), lspHook_)
|
|
117
122
|
}
|
|
118
123
|
|
|
119
124
|
export function Resolver_freshUnificationVariable(self_, at_) {
|
|
@@ -292,7 +297,7 @@ return entry_(_w1.name_, true)
|
|
|
292
297
|
const _1 = self_;
|
|
293
298
|
{
|
|
294
299
|
const _c = _1;
|
|
295
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variables_, lets_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functions_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethods_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variableLocations_, letLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functionLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethodLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variants_, variants_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.types_, types_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeGenerics_, typeGenerics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeLocations_, typeLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.asyncTypes_, asyncTypes_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traits_, traits_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traitLocations_, traitLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), self_.state_, _c.lspHook_)
|
|
300
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variables_, lets_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functions_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethods_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variableLocations_, letLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functionLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethodLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, ff_core_Map.Map_addAll(self_.variants_, variants_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.types_, types_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeGenerics_, typeGenerics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeLocations_, typeLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.asyncTypes_, asyncTypes_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traits_, traits_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traitLocations_, traitLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), self_.state_, _c.lspHook_)
|
|
296
301
|
}
|
|
297
302
|
}
|
|
298
303
|
}
|
|
@@ -305,7 +310,7 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
305
310
|
return ff_core_Pair.Pair(g_, g_)
|
|
306
311
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
307
312
|
const self2_ = (((_c) => {
|
|
308
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
313
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
309
314
|
}))(self_);
|
|
310
315
|
if((!ff_core_Option.Option_any(ff_core_List.List_first(definition_.generics_), ((_w1) => {
|
|
311
316
|
return (_w1 === "Q$")
|
|
@@ -334,7 +339,7 @@ const _1 = f_;
|
|
|
334
339
|
{
|
|
335
340
|
const _c = _1;
|
|
336
341
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
337
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
342
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
338
343
|
})))
|
|
339
344
|
return
|
|
340
345
|
}
|
|
@@ -357,7 +362,7 @@ const _1 = f_;
|
|
|
357
362
|
{
|
|
358
363
|
const _c = _1;
|
|
359
364
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
360
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
365
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
361
366
|
})))
|
|
362
367
|
return
|
|
363
368
|
}
|
|
@@ -380,7 +385,7 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
380
385
|
return ff_core_Pair.Pair(g_, g_)
|
|
381
386
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
382
387
|
const self2_ = (((_c) => {
|
|
383
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
388
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
384
389
|
}))(self_);
|
|
385
390
|
{
|
|
386
391
|
const _1 = definition_;
|
|
@@ -427,7 +432,7 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
427
432
|
return ff_core_Pair.Pair(g_, g_)
|
|
428
433
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
429
434
|
const self2_ = (((_c) => {
|
|
430
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
435
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
431
436
|
}))(self_);
|
|
432
437
|
const traitName_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self2_.traits_, definition_.traitName_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
433
438
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(definition_.at_, ("No such trait: " + definition_.traitName_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
@@ -453,10 +458,10 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
453
458
|
return ff_core_Pair.Pair(g_, g_)
|
|
454
459
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
455
460
|
const selfWithNoQ_ = (((_c) => {
|
|
456
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, definition_.name_, definition_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, definition_.name_, definition_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
461
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, definition_.name_, definition_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, definition_.name_, definition_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
457
462
|
}))(self_);
|
|
458
463
|
const selfWithQ_ = (((_c) => {
|
|
459
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_add(selfWithNoQ_.types_, "Q$", "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, ff_core_Set.Set_add(selfWithNoQ_.typeParameters_, "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
464
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_add(selfWithNoQ_.types_, "Q$", "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, ff_core_Set.Set_add(selfWithNoQ_.typeParameters_, "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
460
465
|
}))(selfWithNoQ_);
|
|
461
466
|
{
|
|
462
467
|
const _1 = definition_;
|
|
@@ -480,29 +485,28 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
480
485
|
const _1 = definition_;
|
|
481
486
|
{
|
|
482
487
|
const _c = _1;
|
|
483
|
-
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true))
|
|
488
|
+
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true, false))
|
|
484
489
|
}
|
|
485
490
|
}
|
|
486
491
|
}
|
|
487
492
|
|
|
488
|
-
export function Resolver_resolveTerm(self_, term_, topLevel_) {
|
|
489
|
-
|
|
490
|
-
const
|
|
491
|
-
|
|
492
|
-
if(term_a.EString) {
|
|
493
|
+
export function Resolver_resolveTerm(self_, term_, topLevel_, inField_ = false) {
|
|
494
|
+
{
|
|
495
|
+
const _1 = term_;
|
|
496
|
+
if(_1.EString) {
|
|
493
497
|
return term_
|
|
494
498
|
}
|
|
495
|
-
if(
|
|
499
|
+
if(_1.EChar) {
|
|
496
500
|
return term_
|
|
497
501
|
}
|
|
498
|
-
if(
|
|
502
|
+
if(_1.EInt) {
|
|
499
503
|
return term_
|
|
500
504
|
}
|
|
501
|
-
if(
|
|
505
|
+
if(_1.EFloat) {
|
|
502
506
|
return term_
|
|
503
507
|
}
|
|
504
|
-
if(
|
|
505
|
-
const e_ =
|
|
508
|
+
if(_1.EVariable) {
|
|
509
|
+
const e_ = _1;
|
|
506
510
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
507
511
|
const at_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variableLocations_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
508
512
|
return e_.at_
|
|
@@ -511,6 +515,11 @@ if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspH
|
|
|
511
515
|
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, at_), ff_core_Option.None(), true))
|
|
512
516
|
}
|
|
513
517
|
};
|
|
518
|
+
if(((!inField_) && ff_core_Option.Option_any(ff_core_Map.Map_get(self_.asVariables_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ((_w1) => {
|
|
519
|
+
return (!ff_core_Option.Option_isEmpty(_w1))
|
|
520
|
+
})))) {
|
|
521
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(e_.at_, "Only field access is allowed on as-bound variables"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
522
|
+
};
|
|
514
523
|
return ff_core_Option.Option_else(ff_core_Option.Option_map(ff_core_Map.Map_get(self_.variables_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ((_w1) => {
|
|
515
524
|
{
|
|
516
525
|
const _1 = e_;
|
|
@@ -524,24 +533,24 @@ return term_
|
|
|
524
533
|
}))
|
|
525
534
|
return
|
|
526
535
|
}
|
|
527
|
-
if(
|
|
528
|
-
const at_ =
|
|
529
|
-
const t_ =
|
|
530
|
-
const items_ =
|
|
536
|
+
if(_1.EList) {
|
|
537
|
+
const at_ = _1.at_;
|
|
538
|
+
const t_ = _1.elementType_;
|
|
539
|
+
const items_ = _1.items_;
|
|
531
540
|
return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(self_, t_, topLevel_), ff_core_List.List_map(items_, ((_1) => {
|
|
532
541
|
{
|
|
533
542
|
const item_ = _1.first_;
|
|
534
543
|
const spread_ = _1.second_;
|
|
535
|
-
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
544
|
+
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_, false), spread_)
|
|
536
545
|
}
|
|
537
546
|
})))
|
|
538
547
|
return
|
|
539
548
|
}
|
|
540
|
-
if(
|
|
541
|
-
const at_ =
|
|
542
|
-
const name_ =
|
|
543
|
-
const typeArguments_ =
|
|
544
|
-
const arguments_ =
|
|
549
|
+
if(_1.EVariant) {
|
|
550
|
+
const at_ = _1.at_;
|
|
551
|
+
const name_ = _1.name_;
|
|
552
|
+
const typeArguments_ = _1.typeArguments_;
|
|
553
|
+
const arguments_ = _1.arguments_;
|
|
545
554
|
return ff_compiler_Syntax.EVariant(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
546
555
|
return name_
|
|
547
556
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -552,17 +561,17 @@ return ff_core_List.List_map(_w1, ((a_) => {
|
|
|
552
561
|
const _1 = a_;
|
|
553
562
|
{
|
|
554
563
|
const _c = _1;
|
|
555
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
564
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
556
565
|
}
|
|
557
566
|
}
|
|
558
567
|
}))
|
|
559
568
|
})))
|
|
560
569
|
return
|
|
561
570
|
}
|
|
562
|
-
if(
|
|
563
|
-
const at_ =
|
|
564
|
-
const name_ =
|
|
565
|
-
const typeArguments_ =
|
|
571
|
+
if(_1.EVariantIs) {
|
|
572
|
+
const at_ = _1.at_;
|
|
573
|
+
const name_ = _1.name_;
|
|
574
|
+
const typeArguments_ = _1.typeArguments_;
|
|
566
575
|
return ff_compiler_Syntax.EVariantIs(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
567
576
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variant: " + name_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
568
577
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -570,61 +579,61 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
570
579
|
})))
|
|
571
580
|
return
|
|
572
581
|
}
|
|
573
|
-
if(
|
|
574
|
-
const at_ =
|
|
575
|
-
const name_ =
|
|
576
|
-
const record_ =
|
|
577
|
-
const arguments_ =
|
|
582
|
+
if(_1.ECopy) {
|
|
583
|
+
const at_ = _1.at_;
|
|
584
|
+
const name_ = _1.name_;
|
|
585
|
+
const record_ = _1.record_;
|
|
586
|
+
const arguments_ = _1.arguments_;
|
|
578
587
|
return ff_compiler_Syntax.ECopy(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
579
588
|
return name_
|
|
580
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), ff_core_List.List_map(arguments_, ((f_) => {
|
|
589
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_, true), ff_core_List.List_map(arguments_, ((f_) => {
|
|
581
590
|
{
|
|
582
591
|
const _1 = f_;
|
|
583
592
|
{
|
|
584
593
|
const _c = _1;
|
|
585
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
594
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
586
595
|
}
|
|
587
596
|
}
|
|
588
597
|
})))
|
|
589
598
|
return
|
|
590
599
|
}
|
|
591
|
-
if(
|
|
592
|
-
const e_ =
|
|
600
|
+
if(_1.EField) {
|
|
601
|
+
const e_ = _1;
|
|
593
602
|
{
|
|
594
603
|
const _1 = e_;
|
|
595
604
|
{
|
|
596
605
|
const _c = _1;
|
|
597
|
-
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
606
|
+
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_, true), _c.field_)
|
|
598
607
|
}
|
|
599
608
|
}
|
|
600
609
|
return
|
|
601
610
|
}
|
|
602
|
-
if(
|
|
603
|
-
const at_ =
|
|
604
|
-
const lambdaAt_ =
|
|
605
|
-
const cases_ =
|
|
611
|
+
if(_1.ELambda) {
|
|
612
|
+
const at_ = _1.at_;
|
|
613
|
+
const lambdaAt_ = _1.lambda_.at_;
|
|
614
|
+
const cases_ = _1.lambda_.cases_;
|
|
606
615
|
const effect_ = ff_compiler_Resolver.Resolver_makeEffectArgument(self_, lambdaAt_, topLevel_);
|
|
607
616
|
return ff_compiler_Syntax.ELambda(at_, ff_compiler_Syntax.Lambda(lambdaAt_, effect_, ff_core_List.List_map(cases_, ((_w1) => {
|
|
608
617
|
return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
609
618
|
}))))
|
|
610
619
|
return
|
|
611
620
|
}
|
|
612
|
-
if(
|
|
613
|
-
const at_ =
|
|
614
|
-
const value_ =
|
|
615
|
-
const effect_ =
|
|
616
|
-
const function_ =
|
|
617
|
-
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_))
|
|
618
|
-
}
|
|
619
|
-
if(
|
|
620
|
-
const at_ =
|
|
621
|
-
const target_ =
|
|
622
|
-
const effect_ =
|
|
623
|
-
const typeArguments_ =
|
|
624
|
-
const arguments_ =
|
|
625
|
-
const dictionaries_ =
|
|
621
|
+
if(_1.EPipe) {
|
|
622
|
+
const at_ = _1.at_;
|
|
623
|
+
const value_ = _1.value_;
|
|
624
|
+
const effect_ = _1.effect_;
|
|
625
|
+
const function_ = _1.function_;
|
|
626
|
+
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_, false))
|
|
627
|
+
}
|
|
628
|
+
if(_1.ECall && _1.target_.DynamicCall) {
|
|
629
|
+
const at_ = _1.at_;
|
|
630
|
+
const target_ = _1.target_;
|
|
631
|
+
const effect_ = _1.effect_;
|
|
632
|
+
const typeArguments_ = _1.typeArguments_;
|
|
633
|
+
const arguments_ = _1.arguments_;
|
|
634
|
+
const dictionaries_ = _1.dictionaries_;
|
|
626
635
|
return ff_compiler_Syntax.ECall(at_, (((_c) => {
|
|
627
|
-
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_), _c.tailCall_)
|
|
636
|
+
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_, false), _c.tailCall_)
|
|
628
637
|
}))(target_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
629
638
|
return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
630
639
|
})), ff_core_List.List_map(arguments_, ((a_) => {
|
|
@@ -632,31 +641,31 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
632
641
|
const _1 = a_;
|
|
633
642
|
{
|
|
634
643
|
const _c = _1;
|
|
635
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
644
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
636
645
|
}
|
|
637
646
|
}
|
|
638
647
|
})), dictionaries_)
|
|
639
648
|
return
|
|
640
649
|
}
|
|
641
|
-
if(
|
|
650
|
+
if(_1.ECall && _1.target_.StaticCall) {
|
|
642
651
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Internal error: Static calls not expected in the Resolver phase"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
643
652
|
}
|
|
644
|
-
if(
|
|
645
|
-
const at_ =
|
|
646
|
-
const fields_ =
|
|
653
|
+
if(_1.ERecord) {
|
|
654
|
+
const at_ = _1.at_;
|
|
655
|
+
const fields_ = _1.fields_;
|
|
647
656
|
return ff_compiler_Syntax.ERecord(at_, ff_core_List.List_map(fields_, ((f_) => {
|
|
648
657
|
{
|
|
649
658
|
const _1 = f_;
|
|
650
659
|
{
|
|
651
660
|
const _c = _1;
|
|
652
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
661
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
653
662
|
}
|
|
654
663
|
}
|
|
655
664
|
})))
|
|
656
665
|
return
|
|
657
666
|
}
|
|
658
|
-
if(
|
|
659
|
-
const e_ =
|
|
667
|
+
if(_1.EWildcard) {
|
|
668
|
+
const e_ = _1;
|
|
660
669
|
if((e_.index_ === 0)) {
|
|
661
670
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(e_.at_, "Unbound wildcard"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
662
671
|
};
|
|
@@ -669,10 +678,10 @@ return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
|
669
678
|
}
|
|
670
679
|
return
|
|
671
680
|
}
|
|
672
|
-
if(
|
|
673
|
-
const at_ =
|
|
674
|
-
const functions_ =
|
|
675
|
-
const body_ =
|
|
681
|
+
if(_1.EFunctions) {
|
|
682
|
+
const at_ = _1.at_;
|
|
683
|
+
const functions_ = _1.functions_;
|
|
684
|
+
const body_ = _1.body_;
|
|
676
685
|
const functionMap_ = ff_core_List.List_toMap(ff_core_List.List_map(ff_core_List.List_map(functions_, ((_w1) => {
|
|
677
686
|
return _w1.signature_.name_
|
|
678
687
|
})), ((name_) => {
|
|
@@ -684,17 +693,17 @@ return _w1.signature_
|
|
|
684
693
|
return ff_core_Pair.Pair(s_.name_, s_.at_)
|
|
685
694
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
686
695
|
const self2_ = (((_c) => {
|
|
687
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, functionMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, locationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
696
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, functionMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, locationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
688
697
|
}))(self_);
|
|
689
698
|
return ff_compiler_Syntax.EFunctions(at_, ff_core_List.List_map(functions_, ((_w1) => {
|
|
690
699
|
return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topLevel_, false)
|
|
691
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
700
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_, false))
|
|
692
701
|
return
|
|
693
702
|
}
|
|
694
|
-
if(
|
|
695
|
-
const e_ =
|
|
703
|
+
if(_1.ELet) {
|
|
704
|
+
const e_ = _1;
|
|
696
705
|
const self2_ = (((_c) => {
|
|
697
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, e_.name_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, e_.name_, e_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
706
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, e_.name_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, e_.name_, e_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
698
707
|
}))(self_);
|
|
699
708
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
700
709
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, e_.at_))) {
|
|
@@ -705,34 +714,35 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
705
714
|
const _1 = e_;
|
|
706
715
|
{
|
|
707
716
|
const _c = _1;
|
|
708
|
-
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_))
|
|
717
|
+
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_, false))
|
|
709
718
|
}
|
|
710
719
|
}
|
|
711
720
|
return
|
|
712
721
|
}
|
|
713
|
-
if(
|
|
714
|
-
const at_ =
|
|
715
|
-
const before_ =
|
|
716
|
-
const after_ =
|
|
717
|
-
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
722
|
+
if(_1.ESequential) {
|
|
723
|
+
const at_ = _1.at_;
|
|
724
|
+
const before_ = _1.before_;
|
|
725
|
+
const after_ = _1.after_;
|
|
726
|
+
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_, false))
|
|
718
727
|
}
|
|
719
|
-
if(
|
|
720
|
-
const at_ =
|
|
721
|
-
const operator_ =
|
|
722
|
-
const variable_ =
|
|
723
|
-
const value_ =
|
|
728
|
+
if(_1.EAssign) {
|
|
729
|
+
const at_ = _1.at_;
|
|
730
|
+
const operator_ = _1.operator_;
|
|
731
|
+
const variable_ = _1.variable_;
|
|
732
|
+
const value_ = _1.value_;
|
|
724
733
|
return ff_compiler_Syntax.EAssign(at_, operator_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variables_, variable_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
725
734
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variable: " + variable_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
726
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
735
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
727
736
|
return
|
|
728
737
|
}
|
|
729
|
-
if(
|
|
730
|
-
const at_ =
|
|
731
|
-
const operator_ =
|
|
732
|
-
const record_ =
|
|
733
|
-
const field_ =
|
|
734
|
-
const value_ =
|
|
735
|
-
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
738
|
+
if(_1.EAssignField) {
|
|
739
|
+
const at_ = _1.at_;
|
|
740
|
+
const operator_ = _1.operator_;
|
|
741
|
+
const record_ = _1.record_;
|
|
742
|
+
const field_ = _1.field_;
|
|
743
|
+
const value_ = _1.value_;
|
|
744
|
+
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_, false), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
745
|
+
}
|
|
736
746
|
}
|
|
737
747
|
}
|
|
738
748
|
|
|
@@ -873,7 +883,7 @@ const _1 = p_;
|
|
|
873
883
|
{
|
|
874
884
|
const _c = _1;
|
|
875
885
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self2_, p_.valueType_, topLevel_), ff_core_Option.Option_map(p_.default_, ((_w1) => {
|
|
876
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_)
|
|
886
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_, false)
|
|
877
887
|
})))
|
|
878
888
|
return
|
|
879
889
|
}
|
|
@@ -900,7 +910,7 @@ return ff_core_Pair.Pair(name_, name_)
|
|
|
900
910
|
const _1 = self_;
|
|
901
911
|
{
|
|
902
912
|
const _c = _1;
|
|
903
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, variableMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, variableLocationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, ff_core_Map.Map_addAll(self_.types_, typeMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
913
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, variableMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, variableLocationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, typeMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
904
914
|
}
|
|
905
915
|
}
|
|
906
916
|
}
|
|
@@ -920,7 +930,7 @@ return ff_core_Map.empty_()
|
|
|
920
930
|
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
921
931
|
const at_ = pattern_a.at_;
|
|
922
932
|
const name_ = pattern_a.name_.value_;
|
|
923
|
-
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_,
|
|
933
|
+
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_, ff_compiler_Resolver.CaseVariable(at_, name_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
924
934
|
}
|
|
925
935
|
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
926
936
|
return ff_core_Map.empty_()
|
|
@@ -936,10 +946,11 @@ return
|
|
|
936
946
|
}
|
|
937
947
|
if(pattern_a.PVariantAs) {
|
|
938
948
|
const at_ = pattern_a.at_;
|
|
949
|
+
const variant_ = pattern_a.name_;
|
|
939
950
|
const variableAt_ = pattern_a.variableAt_;
|
|
940
951
|
const variable_ = pattern_a.variable_;
|
|
941
952
|
return ff_core_List.List_toMap(ff_core_List.List_map(ff_core_Option.Option_toList(variable_), ((x_) => {
|
|
942
|
-
return ff_core_Pair.Pair(x_,
|
|
953
|
+
return ff_core_Pair.Pair(x_, ff_compiler_Resolver.CaseVariable(variableAt_, x_, ff_core_Option.Some(variant_)))
|
|
943
954
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
944
955
|
return
|
|
945
956
|
}
|
|
@@ -947,7 +958,7 @@ if(pattern_a.PAlias) {
|
|
|
947
958
|
const at_ = pattern_a.at_;
|
|
948
959
|
const pattern_ = pattern_a.pattern_;
|
|
949
960
|
const variable_ = pattern_a.variable_;
|
|
950
|
-
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_,
|
|
961
|
+
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_, ff_compiler_Resolver.CaseVariable(at_, variable_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), findVariables_(pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
951
962
|
}
|
|
952
963
|
}
|
|
953
964
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -959,27 +970,31 @@ let guards_ = [];
|
|
|
959
970
|
const variableMap2_ = ff_core_List.List_foldLeft(case_.guards_, variableMap_, ((variableMap1_, g_) => {
|
|
960
971
|
const self2_ = (((_c) => {
|
|
961
972
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
962
|
-
return p_.
|
|
973
|
+
return p_.name_
|
|
963
974
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
964
|
-
return p_.
|
|
975
|
+
return p_.at_
|
|
976
|
+
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.asVariables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
977
|
+
return p_.asBound_
|
|
965
978
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
966
979
|
}))(self_);
|
|
967
980
|
const guard_ = (((_c) => {
|
|
968
|
-
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
981
|
+
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_, false), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
969
982
|
}))(g_);
|
|
970
983
|
guards_ = [guard_, ...guards_];
|
|
971
984
|
return ff_core_Map.Map_addAll(variableMap1_, findVariables_(guard_.pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
972
985
|
}));
|
|
973
986
|
const self3_ = (((_c) => {
|
|
974
987
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
975
|
-
return p_.
|
|
988
|
+
return p_.name_
|
|
976
989
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
977
|
-
return p_.
|
|
990
|
+
return p_.at_
|
|
991
|
+
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.asVariables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
992
|
+
return p_.asBound_
|
|
978
993
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
979
994
|
}))(self_);
|
|
980
995
|
return ff_compiler_Syntax.MatchCase(case_.at_, ff_core_List.List_map(case_.patterns_, ((_w1) => {
|
|
981
996
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
982
|
-
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_))
|
|
997
|
+
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_, false))
|
|
983
998
|
}
|
|
984
999
|
|
|
985
1000
|
export function Resolver_resolvePattern(self_, pattern_) {
|
|
@@ -1229,7 +1244,7 @@ return entry_(_w1.name_, true)
|
|
|
1229
1244
|
const _1 = self_;
|
|
1230
1245
|
{
|
|
1231
1246
|
const _c = _1;
|
|
1232
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variables_, lets_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functions_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethods_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variableLocations_, letLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functionLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethodLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variants_, variants_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.types_, types_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeGenerics_, typeGenerics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeLocations_, typeLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.asyncTypes_, asyncTypes_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traits_, traits_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traitLocations_, traitLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), self_.state_, _c.lspHook_)
|
|
1247
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variables_, lets_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functions_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethods_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variableLocations_, letLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functionLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethodLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, ff_core_Map.Map_addAll(self_.variants_, variants_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.types_, types_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeGenerics_, typeGenerics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeLocations_, typeLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.asyncTypes_, asyncTypes_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traits_, traits_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traitLocations_, traitLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), self_.state_, _c.lspHook_)
|
|
1233
1248
|
}
|
|
1234
1249
|
}
|
|
1235
1250
|
}
|
|
@@ -1242,7 +1257,7 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
1242
1257
|
return ff_core_Pair.Pair(g_, g_)
|
|
1243
1258
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1244
1259
|
const self2_ = (((_c) => {
|
|
1245
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1260
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1246
1261
|
}))(self_);
|
|
1247
1262
|
if((!ff_core_Option.Option_any(ff_core_List.List_first(definition_.generics_), ((_w1) => {
|
|
1248
1263
|
return (_w1 === "Q$")
|
|
@@ -1271,7 +1286,7 @@ const _1 = f_;
|
|
|
1271
1286
|
{
|
|
1272
1287
|
const _c = _1;
|
|
1273
1288
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
1274
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
1289
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
1275
1290
|
})))
|
|
1276
1291
|
return
|
|
1277
1292
|
}
|
|
@@ -1294,7 +1309,7 @@ const _1 = f_;
|
|
|
1294
1309
|
{
|
|
1295
1310
|
const _c = _1;
|
|
1296
1311
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
1297
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
1312
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
1298
1313
|
})))
|
|
1299
1314
|
return
|
|
1300
1315
|
}
|
|
@@ -1317,7 +1332,7 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
1317
1332
|
return ff_core_Pair.Pair(g_, g_)
|
|
1318
1333
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1319
1334
|
const self2_ = (((_c) => {
|
|
1320
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1335
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1321
1336
|
}))(self_);
|
|
1322
1337
|
{
|
|
1323
1338
|
const _1 = definition_;
|
|
@@ -1364,7 +1379,7 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
1364
1379
|
return ff_core_Pair.Pair(g_, g_)
|
|
1365
1380
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1366
1381
|
const self2_ = (((_c) => {
|
|
1367
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1382
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1368
1383
|
}))(self_);
|
|
1369
1384
|
const traitName_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self2_.traits_, definition_.traitName_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1370
1385
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(definition_.at_, ("No such trait: " + definition_.traitName_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
@@ -1390,10 +1405,10 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
1390
1405
|
return ff_core_Pair.Pair(g_, g_)
|
|
1391
1406
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1392
1407
|
const selfWithNoQ_ = (((_c) => {
|
|
1393
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, definition_.name_, definition_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, definition_.name_, definition_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1408
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, definition_.name_, definition_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, definition_.name_, definition_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(definition_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1394
1409
|
}))(self_);
|
|
1395
1410
|
const selfWithQ_ = (((_c) => {
|
|
1396
|
-
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.variants_, ff_core_Map.Map_add(selfWithNoQ_.types_, "Q$", "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, ff_core_Set.Set_add(selfWithNoQ_.typeParameters_, "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1411
|
+
return ff_compiler_Resolver.Resolver(_c.variables_, _c.variableLocations_, _c.asVariables_, _c.variants_, ff_core_Map.Map_add(selfWithNoQ_.types_, "Q$", "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, ff_core_Set.Set_add(selfWithNoQ_.typeParameters_, "Q$", ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1397
1412
|
}))(selfWithNoQ_);
|
|
1398
1413
|
{
|
|
1399
1414
|
const _1 = definition_;
|
|
@@ -1417,29 +1432,28 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
1417
1432
|
const _1 = definition_;
|
|
1418
1433
|
{
|
|
1419
1434
|
const _c = _1;
|
|
1420
|
-
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true))
|
|
1435
|
+
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true, false))
|
|
1421
1436
|
}
|
|
1422
1437
|
}
|
|
1423
1438
|
}
|
|
1424
1439
|
|
|
1425
|
-
export async function Resolver_resolveTerm$(self_, term_, topLevel_, $task) {
|
|
1426
|
-
|
|
1427
|
-
const
|
|
1428
|
-
|
|
1429
|
-
if(term_a.EString) {
|
|
1440
|
+
export async function Resolver_resolveTerm$(self_, term_, topLevel_, inField_ = false, $task) {
|
|
1441
|
+
{
|
|
1442
|
+
const _1 = term_;
|
|
1443
|
+
if(_1.EString) {
|
|
1430
1444
|
return term_
|
|
1431
1445
|
}
|
|
1432
|
-
if(
|
|
1446
|
+
if(_1.EChar) {
|
|
1433
1447
|
return term_
|
|
1434
1448
|
}
|
|
1435
|
-
if(
|
|
1449
|
+
if(_1.EInt) {
|
|
1436
1450
|
return term_
|
|
1437
1451
|
}
|
|
1438
|
-
if(
|
|
1452
|
+
if(_1.EFloat) {
|
|
1439
1453
|
return term_
|
|
1440
1454
|
}
|
|
1441
|
-
if(
|
|
1442
|
-
const e_ =
|
|
1455
|
+
if(_1.EVariable) {
|
|
1456
|
+
const e_ = _1;
|
|
1443
1457
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
1444
1458
|
const at_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variableLocations_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1445
1459
|
return e_.at_
|
|
@@ -1448,6 +1462,11 @@ if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspH
|
|
|
1448
1462
|
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, at_), ff_core_Option.None(), true))
|
|
1449
1463
|
}
|
|
1450
1464
|
};
|
|
1465
|
+
if(((!inField_) && ff_core_Option.Option_any(ff_core_Map.Map_get(self_.asVariables_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ((_w1) => {
|
|
1466
|
+
return (!ff_core_Option.Option_isEmpty(_w1))
|
|
1467
|
+
})))) {
|
|
1468
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(e_.at_, "Only field access is allowed on as-bound variables"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1469
|
+
};
|
|
1451
1470
|
return ff_core_Option.Option_else(ff_core_Option.Option_map(ff_core_Map.Map_get(self_.variables_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ((_w1) => {
|
|
1452
1471
|
{
|
|
1453
1472
|
const _1 = e_;
|
|
@@ -1461,24 +1480,24 @@ return term_
|
|
|
1461
1480
|
}))
|
|
1462
1481
|
return
|
|
1463
1482
|
}
|
|
1464
|
-
if(
|
|
1465
|
-
const at_ =
|
|
1466
|
-
const t_ =
|
|
1467
|
-
const items_ =
|
|
1483
|
+
if(_1.EList) {
|
|
1484
|
+
const at_ = _1.at_;
|
|
1485
|
+
const t_ = _1.elementType_;
|
|
1486
|
+
const items_ = _1.items_;
|
|
1468
1487
|
return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(self_, t_, topLevel_), ff_core_List.List_map(items_, ((_1) => {
|
|
1469
1488
|
{
|
|
1470
1489
|
const item_ = _1.first_;
|
|
1471
1490
|
const spread_ = _1.second_;
|
|
1472
|
-
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
1491
|
+
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_, false), spread_)
|
|
1473
1492
|
}
|
|
1474
1493
|
})))
|
|
1475
1494
|
return
|
|
1476
1495
|
}
|
|
1477
|
-
if(
|
|
1478
|
-
const at_ =
|
|
1479
|
-
const name_ =
|
|
1480
|
-
const typeArguments_ =
|
|
1481
|
-
const arguments_ =
|
|
1496
|
+
if(_1.EVariant) {
|
|
1497
|
+
const at_ = _1.at_;
|
|
1498
|
+
const name_ = _1.name_;
|
|
1499
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1500
|
+
const arguments_ = _1.arguments_;
|
|
1482
1501
|
return ff_compiler_Syntax.EVariant(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1483
1502
|
return name_
|
|
1484
1503
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -1489,17 +1508,17 @@ return ff_core_List.List_map(_w1, ((a_) => {
|
|
|
1489
1508
|
const _1 = a_;
|
|
1490
1509
|
{
|
|
1491
1510
|
const _c = _1;
|
|
1492
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1511
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
1493
1512
|
}
|
|
1494
1513
|
}
|
|
1495
1514
|
}))
|
|
1496
1515
|
})))
|
|
1497
1516
|
return
|
|
1498
1517
|
}
|
|
1499
|
-
if(
|
|
1500
|
-
const at_ =
|
|
1501
|
-
const name_ =
|
|
1502
|
-
const typeArguments_ =
|
|
1518
|
+
if(_1.EVariantIs) {
|
|
1519
|
+
const at_ = _1.at_;
|
|
1520
|
+
const name_ = _1.name_;
|
|
1521
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1503
1522
|
return ff_compiler_Syntax.EVariantIs(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1504
1523
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variant: " + name_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1505
1524
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -1507,61 +1526,61 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1507
1526
|
})))
|
|
1508
1527
|
return
|
|
1509
1528
|
}
|
|
1510
|
-
if(
|
|
1511
|
-
const at_ =
|
|
1512
|
-
const name_ =
|
|
1513
|
-
const record_ =
|
|
1514
|
-
const arguments_ =
|
|
1529
|
+
if(_1.ECopy) {
|
|
1530
|
+
const at_ = _1.at_;
|
|
1531
|
+
const name_ = _1.name_;
|
|
1532
|
+
const record_ = _1.record_;
|
|
1533
|
+
const arguments_ = _1.arguments_;
|
|
1515
1534
|
return ff_compiler_Syntax.ECopy(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1516
1535
|
return name_
|
|
1517
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), ff_core_List.List_map(arguments_, ((f_) => {
|
|
1536
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_, true), ff_core_List.List_map(arguments_, ((f_) => {
|
|
1518
1537
|
{
|
|
1519
1538
|
const _1 = f_;
|
|
1520
1539
|
{
|
|
1521
1540
|
const _c = _1;
|
|
1522
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1541
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
1523
1542
|
}
|
|
1524
1543
|
}
|
|
1525
1544
|
})))
|
|
1526
1545
|
return
|
|
1527
1546
|
}
|
|
1528
|
-
if(
|
|
1529
|
-
const e_ =
|
|
1547
|
+
if(_1.EField) {
|
|
1548
|
+
const e_ = _1;
|
|
1530
1549
|
{
|
|
1531
1550
|
const _1 = e_;
|
|
1532
1551
|
{
|
|
1533
1552
|
const _c = _1;
|
|
1534
|
-
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
1553
|
+
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_, true), _c.field_)
|
|
1535
1554
|
}
|
|
1536
1555
|
}
|
|
1537
1556
|
return
|
|
1538
1557
|
}
|
|
1539
|
-
if(
|
|
1540
|
-
const at_ =
|
|
1541
|
-
const lambdaAt_ =
|
|
1542
|
-
const cases_ =
|
|
1558
|
+
if(_1.ELambda) {
|
|
1559
|
+
const at_ = _1.at_;
|
|
1560
|
+
const lambdaAt_ = _1.lambda_.at_;
|
|
1561
|
+
const cases_ = _1.lambda_.cases_;
|
|
1543
1562
|
const effect_ = ff_compiler_Resolver.Resolver_makeEffectArgument(self_, lambdaAt_, topLevel_);
|
|
1544
1563
|
return ff_compiler_Syntax.ELambda(at_, ff_compiler_Syntax.Lambda(lambdaAt_, effect_, ff_core_List.List_map(cases_, ((_w1) => {
|
|
1545
1564
|
return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
1546
1565
|
}))))
|
|
1547
1566
|
return
|
|
1548
1567
|
}
|
|
1549
|
-
if(
|
|
1550
|
-
const at_ =
|
|
1551
|
-
const value_ =
|
|
1552
|
-
const effect_ =
|
|
1553
|
-
const function_ =
|
|
1554
|
-
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_))
|
|
1555
|
-
}
|
|
1556
|
-
if(
|
|
1557
|
-
const at_ =
|
|
1558
|
-
const target_ =
|
|
1559
|
-
const effect_ =
|
|
1560
|
-
const typeArguments_ =
|
|
1561
|
-
const arguments_ =
|
|
1562
|
-
const dictionaries_ =
|
|
1568
|
+
if(_1.EPipe) {
|
|
1569
|
+
const at_ = _1.at_;
|
|
1570
|
+
const value_ = _1.value_;
|
|
1571
|
+
const effect_ = _1.effect_;
|
|
1572
|
+
const function_ = _1.function_;
|
|
1573
|
+
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_, false))
|
|
1574
|
+
}
|
|
1575
|
+
if(_1.ECall && _1.target_.DynamicCall) {
|
|
1576
|
+
const at_ = _1.at_;
|
|
1577
|
+
const target_ = _1.target_;
|
|
1578
|
+
const effect_ = _1.effect_;
|
|
1579
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1580
|
+
const arguments_ = _1.arguments_;
|
|
1581
|
+
const dictionaries_ = _1.dictionaries_;
|
|
1563
1582
|
return ff_compiler_Syntax.ECall(at_, (((_c) => {
|
|
1564
|
-
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_), _c.tailCall_)
|
|
1583
|
+
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_, false), _c.tailCall_)
|
|
1565
1584
|
}))(target_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
1566
1585
|
return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
1567
1586
|
})), ff_core_List.List_map(arguments_, ((a_) => {
|
|
@@ -1569,31 +1588,31 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1569
1588
|
const _1 = a_;
|
|
1570
1589
|
{
|
|
1571
1590
|
const _c = _1;
|
|
1572
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1591
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
1573
1592
|
}
|
|
1574
1593
|
}
|
|
1575
1594
|
})), dictionaries_)
|
|
1576
1595
|
return
|
|
1577
1596
|
}
|
|
1578
|
-
if(
|
|
1597
|
+
if(_1.ECall && _1.target_.StaticCall) {
|
|
1579
1598
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Internal error: Static calls not expected in the Resolver phase"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1580
1599
|
}
|
|
1581
|
-
if(
|
|
1582
|
-
const at_ =
|
|
1583
|
-
const fields_ =
|
|
1600
|
+
if(_1.ERecord) {
|
|
1601
|
+
const at_ = _1.at_;
|
|
1602
|
+
const fields_ = _1.fields_;
|
|
1584
1603
|
return ff_compiler_Syntax.ERecord(at_, ff_core_List.List_map(fields_, ((f_) => {
|
|
1585
1604
|
{
|
|
1586
1605
|
const _1 = f_;
|
|
1587
1606
|
{
|
|
1588
1607
|
const _c = _1;
|
|
1589
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1608
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
1590
1609
|
}
|
|
1591
1610
|
}
|
|
1592
1611
|
})))
|
|
1593
1612
|
return
|
|
1594
1613
|
}
|
|
1595
|
-
if(
|
|
1596
|
-
const e_ =
|
|
1614
|
+
if(_1.EWildcard) {
|
|
1615
|
+
const e_ = _1;
|
|
1597
1616
|
if((e_.index_ === 0)) {
|
|
1598
1617
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(e_.at_, "Unbound wildcard"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1599
1618
|
};
|
|
@@ -1606,10 +1625,10 @@ return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
|
1606
1625
|
}
|
|
1607
1626
|
return
|
|
1608
1627
|
}
|
|
1609
|
-
if(
|
|
1610
|
-
const at_ =
|
|
1611
|
-
const functions_ =
|
|
1612
|
-
const body_ =
|
|
1628
|
+
if(_1.EFunctions) {
|
|
1629
|
+
const at_ = _1.at_;
|
|
1630
|
+
const functions_ = _1.functions_;
|
|
1631
|
+
const body_ = _1.body_;
|
|
1613
1632
|
const functionMap_ = ff_core_List.List_toMap(ff_core_List.List_map(ff_core_List.List_map(functions_, ((_w1) => {
|
|
1614
1633
|
return _w1.signature_.name_
|
|
1615
1634
|
})), ((name_) => {
|
|
@@ -1621,17 +1640,17 @@ return _w1.signature_
|
|
|
1621
1640
|
return ff_core_Pair.Pair(s_.name_, s_.at_)
|
|
1622
1641
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1623
1642
|
const self2_ = (((_c) => {
|
|
1624
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, functionMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, locationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1643
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, functionMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, locationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1625
1644
|
}))(self_);
|
|
1626
1645
|
return ff_compiler_Syntax.EFunctions(at_, ff_core_List.List_map(functions_, ((_w1) => {
|
|
1627
1646
|
return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topLevel_, false)
|
|
1628
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
1647
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_, false))
|
|
1629
1648
|
return
|
|
1630
1649
|
}
|
|
1631
|
-
if(
|
|
1632
|
-
const e_ =
|
|
1650
|
+
if(_1.ELet) {
|
|
1651
|
+
const e_ = _1;
|
|
1633
1652
|
const self2_ = (((_c) => {
|
|
1634
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, e_.name_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, e_.name_, e_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1653
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, e_.name_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_add(self_.variableLocations_, e_.name_, e_.at_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1635
1654
|
}))(self_);
|
|
1636
1655
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
1637
1656
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, e_.at_))) {
|
|
@@ -1642,34 +1661,35 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
1642
1661
|
const _1 = e_;
|
|
1643
1662
|
{
|
|
1644
1663
|
const _c = _1;
|
|
1645
|
-
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_))
|
|
1664
|
+
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_, false))
|
|
1646
1665
|
}
|
|
1647
1666
|
}
|
|
1648
1667
|
return
|
|
1649
1668
|
}
|
|
1650
|
-
if(
|
|
1651
|
-
const at_ =
|
|
1652
|
-
const before_ =
|
|
1653
|
-
const after_ =
|
|
1654
|
-
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
1669
|
+
if(_1.ESequential) {
|
|
1670
|
+
const at_ = _1.at_;
|
|
1671
|
+
const before_ = _1.before_;
|
|
1672
|
+
const after_ = _1.after_;
|
|
1673
|
+
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_, false))
|
|
1655
1674
|
}
|
|
1656
|
-
if(
|
|
1657
|
-
const at_ =
|
|
1658
|
-
const operator_ =
|
|
1659
|
-
const variable_ =
|
|
1660
|
-
const value_ =
|
|
1675
|
+
if(_1.EAssign) {
|
|
1676
|
+
const at_ = _1.at_;
|
|
1677
|
+
const operator_ = _1.operator_;
|
|
1678
|
+
const variable_ = _1.variable_;
|
|
1679
|
+
const value_ = _1.value_;
|
|
1661
1680
|
return ff_compiler_Syntax.EAssign(at_, operator_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variables_, variable_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1662
1681
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variable: " + variable_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1663
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1682
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
1664
1683
|
return
|
|
1665
1684
|
}
|
|
1666
|
-
if(
|
|
1667
|
-
const at_ =
|
|
1668
|
-
const operator_ =
|
|
1669
|
-
const record_ =
|
|
1670
|
-
const field_ =
|
|
1671
|
-
const value_ =
|
|
1672
|
-
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1685
|
+
if(_1.EAssignField) {
|
|
1686
|
+
const at_ = _1.at_;
|
|
1687
|
+
const operator_ = _1.operator_;
|
|
1688
|
+
const record_ = _1.record_;
|
|
1689
|
+
const field_ = _1.field_;
|
|
1690
|
+
const value_ = _1.value_;
|
|
1691
|
+
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_, false), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
1692
|
+
}
|
|
1673
1693
|
}
|
|
1674
1694
|
}
|
|
1675
1695
|
|
|
@@ -1810,7 +1830,7 @@ const _1 = p_;
|
|
|
1810
1830
|
{
|
|
1811
1831
|
const _c = _1;
|
|
1812
1832
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self2_, p_.valueType_, topLevel_), ff_core_Option.Option_map(p_.default_, ((_w1) => {
|
|
1813
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_)
|
|
1833
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_, false)
|
|
1814
1834
|
})))
|
|
1815
1835
|
return
|
|
1816
1836
|
}
|
|
@@ -1837,7 +1857,7 @@ return ff_core_Pair.Pair(name_, name_)
|
|
|
1837
1857
|
const _1 = self_;
|
|
1838
1858
|
{
|
|
1839
1859
|
const _c = _1;
|
|
1840
|
-
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, variableMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, variableLocationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, ff_core_Map.Map_addAll(self_.types_, typeMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1860
|
+
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, variableMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, variableLocationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.asVariables_, _c.variants_, ff_core_Map.Map_addAll(self_.types_, typeMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1841
1861
|
}
|
|
1842
1862
|
}
|
|
1843
1863
|
}
|
|
@@ -1857,7 +1877,7 @@ return ff_core_Map.empty_()
|
|
|
1857
1877
|
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
1858
1878
|
const at_ = pattern_a.at_;
|
|
1859
1879
|
const name_ = pattern_a.name_.value_;
|
|
1860
|
-
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_,
|
|
1880
|
+
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_, ff_compiler_Resolver.CaseVariable(at_, name_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1861
1881
|
}
|
|
1862
1882
|
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
1863
1883
|
return ff_core_Map.empty_()
|
|
@@ -1873,10 +1893,11 @@ return
|
|
|
1873
1893
|
}
|
|
1874
1894
|
if(pattern_a.PVariantAs) {
|
|
1875
1895
|
const at_ = pattern_a.at_;
|
|
1896
|
+
const variant_ = pattern_a.name_;
|
|
1876
1897
|
const variableAt_ = pattern_a.variableAt_;
|
|
1877
1898
|
const variable_ = pattern_a.variable_;
|
|
1878
1899
|
return ff_core_List.List_toMap(ff_core_List.List_map(ff_core_Option.Option_toList(variable_), ((x_) => {
|
|
1879
|
-
return ff_core_Pair.Pair(x_,
|
|
1900
|
+
return ff_core_Pair.Pair(x_, ff_compiler_Resolver.CaseVariable(variableAt_, x_, ff_core_Option.Some(variant_)))
|
|
1880
1901
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1881
1902
|
return
|
|
1882
1903
|
}
|
|
@@ -1884,7 +1905,7 @@ if(pattern_a.PAlias) {
|
|
|
1884
1905
|
const at_ = pattern_a.at_;
|
|
1885
1906
|
const pattern_ = pattern_a.pattern_;
|
|
1886
1907
|
const variable_ = pattern_a.variable_;
|
|
1887
|
-
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_,
|
|
1908
|
+
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_, ff_compiler_Resolver.CaseVariable(at_, variable_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), findVariables_(pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1888
1909
|
}
|
|
1889
1910
|
}
|
|
1890
1911
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -1896,27 +1917,31 @@ let guards_ = [];
|
|
|
1896
1917
|
const variableMap2_ = ff_core_List.List_foldLeft(case_.guards_, variableMap_, ((variableMap1_, g_) => {
|
|
1897
1918
|
const self2_ = (((_c) => {
|
|
1898
1919
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
1899
|
-
return p_.
|
|
1920
|
+
return p_.name_
|
|
1900
1921
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
1901
|
-
return p_.
|
|
1922
|
+
return p_.at_
|
|
1923
|
+
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.asVariables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
1924
|
+
return p_.asBound_
|
|
1902
1925
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1903
1926
|
}))(self_);
|
|
1904
1927
|
const guard_ = (((_c) => {
|
|
1905
|
-
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
1928
|
+
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_, false), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
1906
1929
|
}))(g_);
|
|
1907
1930
|
guards_ = [guard_, ...guards_];
|
|
1908
1931
|
return ff_core_Map.Map_addAll(variableMap1_, findVariables_(guard_.pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1909
1932
|
}));
|
|
1910
1933
|
const self3_ = (((_c) => {
|
|
1911
1934
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
1912
|
-
return p_.
|
|
1935
|
+
return p_.name_
|
|
1913
1936
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
1914
|
-
return p_.
|
|
1937
|
+
return p_.at_
|
|
1938
|
+
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.asVariables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
1939
|
+
return p_.asBound_
|
|
1915
1940
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1916
1941
|
}))(self_);
|
|
1917
1942
|
return ff_compiler_Syntax.MatchCase(case_.at_, ff_core_List.List_map(case_.patterns_, ((_w1) => {
|
|
1918
1943
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
1919
|
-
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_))
|
|
1944
|
+
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_, false))
|
|
1920
1945
|
}
|
|
1921
1946
|
|
|
1922
1947
|
export async function Resolver_resolvePattern$(self_, pattern_, $task) {
|
|
@@ -1990,6 +2015,169 @@ return
|
|
|
1990
2015
|
}
|
|
1991
2016
|
}
|
|
1992
2017
|
|
|
2018
|
+
export const ff_core_Any_HasAnyTag$ff_compiler_Resolver_CaseVariable = {
|
|
2019
|
+
anyTag_() {
|
|
2020
|
+
return ff_core_Any.internalAnyTag_((("ff:compiler/Resolver.CaseVariable" + "[") + "]"))
|
|
2021
|
+
},
|
|
2022
|
+
async anyTag_$($task) {
|
|
2023
|
+
return ff_core_Any.internalAnyTag_((("ff:compiler/Resolver.CaseVariable" + "[") + "]"))
|
|
2024
|
+
}
|
|
2025
|
+
};
|
|
2026
|
+
|
|
2027
|
+
export const ff_core_Show_Show$ff_compiler_Resolver_CaseVariable = {
|
|
2028
|
+
show_(value_) {
|
|
2029
|
+
const value_a = value_;
|
|
2030
|
+
{
|
|
2031
|
+
const z_ = value_a;
|
|
2032
|
+
return ((((((("CaseVariable" + "(") + ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Location.show_(z_.at_)) + ", ") + ff_core_Show.ff_core_Show_Show$ff_core_String_String.show_(z_.name_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.asBound_)) + ")")
|
|
2033
|
+
}
|
|
2034
|
+
},
|
|
2035
|
+
async show_$(value_, $task) {
|
|
2036
|
+
const value_a = value_;
|
|
2037
|
+
{
|
|
2038
|
+
const z_ = value_a;
|
|
2039
|
+
return ((((((("CaseVariable" + "(") + ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Location.show_(z_.at_)) + ", ") + ff_core_Show.ff_core_Show_Show$ff_core_String_String.show_(z_.name_)) + ", ") + ff_core_Option.ff_core_Show_Show$ff_core_Option_Option(ff_core_Show.ff_core_Show_Show$ff_core_String_String).show_(z_.asBound_)) + ")")
|
|
2040
|
+
}
|
|
2041
|
+
}
|
|
2042
|
+
};
|
|
2043
|
+
|
|
2044
|
+
export const ff_core_Equal_Equal$ff_compiler_Resolver_CaseVariable = {
|
|
2045
|
+
equals_(x_, y_) {
|
|
2046
|
+
const x_a = x_;
|
|
2047
|
+
const y_a = y_;
|
|
2048
|
+
if((x_ === y_)) {
|
|
2049
|
+
return true
|
|
2050
|
+
}
|
|
2051
|
+
{
|
|
2052
|
+
return (ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Location.equals_(x_.at_, y_.at_) && ((x_.name_ === y_.name_) && ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.asBound_, y_.asBound_)))
|
|
2053
|
+
}
|
|
2054
|
+
},
|
|
2055
|
+
async equals_$(x_, y_, $task) {
|
|
2056
|
+
const x_a = x_;
|
|
2057
|
+
const y_a = y_;
|
|
2058
|
+
if((x_ === y_)) {
|
|
2059
|
+
return true
|
|
2060
|
+
}
|
|
2061
|
+
{
|
|
2062
|
+
return (ff_compiler_Syntax.ff_core_Equal_Equal$ff_compiler_Syntax_Location.equals_(x_.at_, y_.at_) && ((x_.name_ === y_.name_) && ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String).equals_(x_.asBound_, y_.asBound_)))
|
|
2063
|
+
}
|
|
2064
|
+
}
|
|
2065
|
+
};
|
|
1993
2066
|
|
|
2067
|
+
export const ff_core_Ordering_Order$ff_compiler_Resolver_CaseVariable = {
|
|
2068
|
+
compare_(x_, y_) {
|
|
2069
|
+
const x_a = x_;
|
|
2070
|
+
const y_a = y_;
|
|
2071
|
+
if((x_ === y_)) {
|
|
2072
|
+
return ff_core_Ordering.OrderingSame()
|
|
2073
|
+
}
|
|
2074
|
+
{
|
|
2075
|
+
const atOrdering_ = ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_Location.compare_(x_.at_, y_.at_);
|
|
2076
|
+
if((atOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2077
|
+
return atOrdering_
|
|
2078
|
+
} else {
|
|
2079
|
+
const nameOrdering_ = ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String.compare_(x_.name_, y_.name_);
|
|
2080
|
+
if((nameOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2081
|
+
return nameOrdering_
|
|
2082
|
+
} else {
|
|
2083
|
+
const asBoundOrdering_ = ff_core_Option.ff_core_Ordering_Order$ff_core_Option_Option(ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String).compare_(x_.asBound_, y_.asBound_);
|
|
2084
|
+
if((asBoundOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2085
|
+
return asBoundOrdering_
|
|
2086
|
+
} else {
|
|
2087
|
+
return ff_core_Ordering.OrderingSame()
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
return
|
|
2092
|
+
}
|
|
2093
|
+
},
|
|
2094
|
+
async compare_$(x_, y_, $task) {
|
|
2095
|
+
const x_a = x_;
|
|
2096
|
+
const y_a = y_;
|
|
2097
|
+
if((x_ === y_)) {
|
|
2098
|
+
return ff_core_Ordering.OrderingSame()
|
|
2099
|
+
}
|
|
2100
|
+
{
|
|
2101
|
+
const atOrdering_ = ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_Location.compare_(x_.at_, y_.at_);
|
|
2102
|
+
if((atOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2103
|
+
return atOrdering_
|
|
2104
|
+
} else {
|
|
2105
|
+
const nameOrdering_ = ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String.compare_(x_.name_, y_.name_);
|
|
2106
|
+
if((nameOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2107
|
+
return nameOrdering_
|
|
2108
|
+
} else {
|
|
2109
|
+
const asBoundOrdering_ = ff_core_Option.ff_core_Ordering_Order$ff_core_Option_Option(ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String).compare_(x_.asBound_, y_.asBound_);
|
|
2110
|
+
if((asBoundOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2111
|
+
return asBoundOrdering_
|
|
2112
|
+
} else {
|
|
2113
|
+
return ff_core_Ordering.OrderingSame()
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
return
|
|
2118
|
+
}
|
|
2119
|
+
}
|
|
2120
|
+
};
|
|
2121
|
+
|
|
2122
|
+
export const ff_core_Serializable_Serializable$ff_compiler_Resolver_CaseVariable = {
|
|
2123
|
+
serializeUsing_(serialization_, value_) {
|
|
2124
|
+
const serialization_a = serialization_;
|
|
2125
|
+
const value_a = value_;
|
|
2126
|
+
{
|
|
2127
|
+
const v_ = value_a;
|
|
2128
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2129
|
+
ff_core_Serializable.Serialization_autoResize(serialization_, 1);
|
|
2130
|
+
ff_core_Buffer.Buffer_setUint8(serialization_.buffer_, serialization_.offset_, 0);
|
|
2131
|
+
serialization_.offset_ += 1;
|
|
2132
|
+
ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.serializeUsing_(serialization_, v_.at_);
|
|
2133
|
+
ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.serializeUsing_(serialization_, v_.name_);
|
|
2134
|
+
ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).serializeUsing_(serialization_, v_.asBound_)
|
|
2135
|
+
return
|
|
2136
|
+
}
|
|
2137
|
+
},
|
|
2138
|
+
deserializeUsing_(serialization_) {
|
|
2139
|
+
const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
|
|
2140
|
+
serialization_.offset_ += 1;
|
|
2141
|
+
{
|
|
2142
|
+
const _1 = variantIndex_;
|
|
2143
|
+
if(_1 === 0) {
|
|
2144
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2145
|
+
return ff_compiler_Resolver.CaseVariable(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.deserializeUsing_(serialization_), ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
|
|
2146
|
+
}
|
|
2147
|
+
{
|
|
2148
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException)})
|
|
2149
|
+
}
|
|
2150
|
+
}
|
|
2151
|
+
},
|
|
2152
|
+
async serializeUsing_$(serialization_, value_, $task) {
|
|
2153
|
+
const serialization_a = serialization_;
|
|
2154
|
+
const value_a = value_;
|
|
2155
|
+
{
|
|
2156
|
+
const v_ = value_a;
|
|
2157
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2158
|
+
ff_core_Serializable.Serialization_autoResize(serialization_, 1);
|
|
2159
|
+
ff_core_Buffer.Buffer_setUint8(serialization_.buffer_, serialization_.offset_, 0);
|
|
2160
|
+
serialization_.offset_ += 1;
|
|
2161
|
+
ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.serializeUsing_(serialization_, v_.at_);
|
|
2162
|
+
ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.serializeUsing_(serialization_, v_.name_);
|
|
2163
|
+
ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).serializeUsing_(serialization_, v_.asBound_)
|
|
2164
|
+
return
|
|
2165
|
+
}
|
|
2166
|
+
},
|
|
2167
|
+
async deserializeUsing_$(serialization_, $task) {
|
|
2168
|
+
const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
|
|
2169
|
+
serialization_.offset_ += 1;
|
|
2170
|
+
{
|
|
2171
|
+
const _1 = variantIndex_;
|
|
2172
|
+
if(_1 === 0) {
|
|
2173
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2174
|
+
return ff_compiler_Resolver.CaseVariable(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.deserializeUsing_(serialization_), ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
|
|
2175
|
+
}
|
|
2176
|
+
{
|
|
2177
|
+
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_core_Serializable.DeserializationChecksumException(), ff_core_Serializable.ff_core_Any_HasAnyTag$ff_core_Serializable_DeserializationChecksumException)})
|
|
2178
|
+
}
|
|
2179
|
+
}
|
|
2180
|
+
}
|
|
2181
|
+
};
|
|
1994
2182
|
|
|
1995
2183
|
|