firefly-compiler 0.4.20 → 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/Builder.ff +23 -13
- package/compiler/Dictionaries.ff +10 -10
- package/compiler/Inference.ff +167 -148
- package/compiler/JsEmitter.ff +122 -78
- package/compiler/LspHook.ff +6 -3
- package/compiler/Main.ff +24 -10
- package/compiler/Patterns.ff +1 -1
- package/compiler/Resolver.ff +167 -159
- package/compiler/Substitution.ff +2 -2
- package/compiler/Syntax.ff +1 -0
- package/compiler/Unification.ff +1 -1
- package/core/Array.ff +6 -4
- package/core/Int.ff +12 -12
- package/core/List.ff +6 -4
- package/core/Map.ff +8 -0
- package/core/Set.ff +7 -0
- package/experimental/benchmarks/ListGrab.ff +23 -0
- package/experimental/benchmarks/ListGrab.java +55 -0
- package/experimental/benchmarks/Pyrotek45.ff +30 -0
- package/experimental/benchmarks/Pyrotek45.java +64 -0
- package/experimental/tests/TestJson.ff +26 -0
- package/lsp/Handler.ff +65 -61
- package/lsp/SignatureHelpHandler.ff +5 -4
- package/lsp/TestReferences.ff +15 -0
- package/lsp/TestReferencesCase.ff +8 -0
- package/output/js/ff/compiler/Builder.mjs +50 -44
- package/output/js/ff/compiler/Dependencies.mjs +0 -2
- package/output/js/ff/compiler/Deriver.mjs +16 -140
- package/output/js/ff/compiler/Dictionaries.mjs +24 -238
- package/output/js/ff/compiler/Environment.mjs +12 -154
- package/output/js/ff/compiler/Inference.mjs +207 -1069
- package/output/js/ff/compiler/JsEmitter.mjs +434 -2342
- package/output/js/ff/compiler/JsImporter.mjs +0 -12
- package/output/js/ff/compiler/LspHook.mjs +20 -446
- package/output/js/ff/compiler/Main.mjs +110 -553
- package/output/js/ff/compiler/Parser.mjs +36 -356
- package/output/js/ff/compiler/Patterns.mjs +24 -204
- package/output/js/ff/compiler/Resolver.mjs +428 -554
- package/output/js/ff/compiler/Substitution.mjs +6 -164
- package/output/js/ff/compiler/Syntax.mjs +449 -3293
- package/output/js/ff/compiler/Token.mjs +9 -1095
- package/output/js/ff/compiler/Tokenizer.mjs +4 -2
- package/output/js/ff/compiler/Unification.mjs +30 -364
- package/output/js/ff/compiler/Wildcards.mjs +0 -86
- package/output/js/ff/compiler/Workspace.mjs +8 -96
- package/output/js/ff/core/Array.mjs +15 -8
- package/output/js/ff/core/AssetSystem.mjs +4 -14
- package/output/js/ff/core/Bool.mjs +0 -12
- package/output/js/ff/core/Core.mjs +0 -30
- package/output/js/ff/core/Int.mjs +24 -24
- package/output/js/ff/core/IntMap.mjs +0 -8
- package/output/js/ff/core/Json.mjs +0 -40
- package/output/js/ff/core/List.mjs +23 -32
- package/output/js/ff/core/Lock.mjs +0 -10
- package/output/js/ff/core/Map.mjs +26 -24
- package/output/js/ff/core/Option.mjs +10 -286
- package/output/js/ff/core/Ordering.mjs +16 -158
- package/output/js/ff/core/Pair.mjs +2 -34
- package/output/js/ff/core/Path.mjs +2 -28
- package/output/js/ff/core/Random.mjs +4 -4
- package/output/js/ff/core/RbMap.mjs +56 -644
- package/output/js/ff/core/Set.mjs +16 -0
- package/output/js/ff/core/Show.mjs +0 -16
- package/output/js/ff/core/Stream.mjs +14 -144
- package/output/js/ff/core/StringMap.mjs +0 -8
- package/output/js/ff/core/Try.mjs +4 -108
- package/output/js/ff/core/Unit.mjs +2 -16
- package/package.json +1 -1
- package/postgresql/Pg.ff +23 -23
- 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_) {
|
|
@@ -156,7 +161,6 @@ return module2_
|
|
|
156
161
|
export function Resolver_checkInstanceType(self_, type_) {
|
|
157
162
|
{
|
|
158
163
|
const _1 = type_;
|
|
159
|
-
{
|
|
160
164
|
if(_1.TConstructor) {
|
|
161
165
|
const name_ = _1.name_;
|
|
162
166
|
const typeArguments_ = _1.generics_;
|
|
@@ -168,7 +172,6 @@ ff_compiler_Resolver.Resolver_checkInstanceType(self_, _w1)
|
|
|
168
172
|
}))
|
|
169
173
|
return
|
|
170
174
|
}
|
|
171
|
-
}
|
|
172
175
|
{
|
|
173
176
|
|
|
174
177
|
return
|
|
@@ -183,18 +186,13 @@ ff_core_List.List_each(imports_, ((import_) => {
|
|
|
183
186
|
const _1 = ff_core_List.List_find(modules_, ((_w1) => {
|
|
184
187
|
return (ff_core_String.String_dropLast(_w1.file_, 3) === import_.file_)
|
|
185
188
|
}));
|
|
186
|
-
{
|
|
187
189
|
if(_1.Some) {
|
|
188
190
|
const module_ = _1.value_;
|
|
189
191
|
resolver_ = ff_compiler_Resolver.Resolver_processDefinitions(resolver_, module_, ff_core_Option.Some(import_.alias_))
|
|
190
192
|
return
|
|
191
193
|
}
|
|
192
|
-
}
|
|
193
|
-
{
|
|
194
194
|
if(_1.None) {
|
|
195
195
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(import_.at_, ("No such module: " + import_.file_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
196
|
-
return
|
|
197
|
-
}
|
|
198
196
|
}
|
|
199
197
|
}
|
|
200
198
|
}));
|
|
@@ -206,28 +204,18 @@ function entry_(name_, unqualified_) {
|
|
|
206
204
|
const full_ = ((((ff_compiler_Syntax.PackagePair_groupName(module_.packagePair_, ":") + "/") + ff_core_String.String_dropLast(module_.file_, 3)) + ".") + name_);
|
|
207
205
|
{
|
|
208
206
|
const _1 = importAlias_;
|
|
209
|
-
{
|
|
210
207
|
if(_1.None) {
|
|
211
208
|
return [ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
212
|
-
return
|
|
213
|
-
}
|
|
214
209
|
}
|
|
215
|
-
{
|
|
216
210
|
if(_1.Some) {
|
|
217
211
|
const alias_ = _1.value_;
|
|
218
|
-
|
|
219
|
-
if(_guard1) {
|
|
212
|
+
if(unqualified_) {
|
|
220
213
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
221
|
-
return
|
|
222
|
-
}
|
|
223
214
|
}
|
|
224
215
|
}
|
|
225
|
-
{
|
|
226
216
|
if(_1.Some) {
|
|
227
217
|
const alias_ = _1.value_;
|
|
228
218
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(full_, full_)]
|
|
229
|
-
return
|
|
230
|
-
}
|
|
231
219
|
}
|
|
232
220
|
}
|
|
233
221
|
}
|
|
@@ -309,21 +297,20 @@ return entry_(_w1.name_, true)
|
|
|
309
297
|
const _1 = self_;
|
|
310
298
|
{
|
|
311
299
|
const _c = _1;
|
|
312
|
-
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_)
|
|
313
|
-
return
|
|
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_)
|
|
314
301
|
}
|
|
315
302
|
}
|
|
316
303
|
}
|
|
317
304
|
|
|
318
305
|
export function Resolver_resolveTypeDefinition(self_, definition_) {
|
|
319
306
|
if(ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_)) {
|
|
320
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None()))
|
|
307
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None(), true))
|
|
321
308
|
};
|
|
322
309
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
323
310
|
return ff_core_Pair.Pair(g_, g_)
|
|
324
311
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
325
312
|
const self2_ = (((_c) => {
|
|
326
|
-
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_)
|
|
327
314
|
}))(self_);
|
|
328
315
|
if((!ff_core_Option.Option_any(ff_core_List.List_first(definition_.generics_), ((_w1) => {
|
|
329
316
|
return (_w1 === "Q$")
|
|
@@ -352,14 +339,14 @@ const _1 = f_;
|
|
|
352
339
|
{
|
|
353
340
|
const _c = _1;
|
|
354
341
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
355
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
342
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
356
343
|
})))
|
|
357
344
|
return
|
|
358
345
|
}
|
|
359
346
|
}
|
|
360
347
|
})), ff_core_List.List_map(definition_.variants_, ((v_) => {
|
|
361
348
|
if(ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, v_.at_)) {
|
|
362
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(v_.name_, v_.at_, v_.at_), ff_core_Option.None()))
|
|
349
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(v_.name_, v_.at_, v_.at_), ff_core_Option.None(), true))
|
|
363
350
|
};
|
|
364
351
|
{
|
|
365
352
|
const _1 = v_;
|
|
@@ -375,7 +362,7 @@ const _1 = f_;
|
|
|
375
362
|
{
|
|
376
363
|
const _c = _1;
|
|
377
364
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
378
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
365
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
379
366
|
})))
|
|
380
367
|
return
|
|
381
368
|
}
|
|
@@ -392,13 +379,13 @@ return
|
|
|
392
379
|
|
|
393
380
|
export function Resolver_resolveTraitDefinition(self_, definition_) {
|
|
394
381
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, definition_.at_))) {
|
|
395
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None()))
|
|
382
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None(), true))
|
|
396
383
|
};
|
|
397
384
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
398
385
|
return ff_core_Pair.Pair(g_, g_)
|
|
399
386
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
400
387
|
const self2_ = (((_c) => {
|
|
401
|
-
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_)
|
|
402
389
|
}))(self_);
|
|
403
390
|
{
|
|
404
391
|
const _1 = definition_;
|
|
@@ -418,16 +405,12 @@ return (_w1.name_ === name_)
|
|
|
418
405
|
const function1_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(lambda_));
|
|
419
406
|
const function2_ = ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, function1_, true, false);
|
|
420
407
|
return ff_core_Pair.Pair(name_, (((_1) => {
|
|
421
|
-
{
|
|
422
408
|
if(_1.FireflyTarget) {
|
|
423
409
|
const lambda_ = _1.lambda_;
|
|
424
410
|
return lambda_
|
|
425
|
-
return
|
|
426
|
-
}
|
|
427
411
|
}
|
|
428
412
|
{
|
|
429
413
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(signature_.at_, "Internal error: Expected method default to be a lambda"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
430
|
-
return
|
|
431
414
|
}
|
|
432
415
|
}))(function2_.body_))
|
|
433
416
|
return
|
|
@@ -443,13 +426,13 @@ const traitDefinedAt_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.tra
|
|
|
443
426
|
return definition_.at_
|
|
444
427
|
}));
|
|
445
428
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, traitDefinedAt_))) {
|
|
446
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.traitName_, definition_.at_, traitDefinedAt_), ff_core_Option.None()))
|
|
429
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.traitName_, definition_.at_, traitDefinedAt_), ff_core_Option.None(), true))
|
|
447
430
|
};
|
|
448
431
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
449
432
|
return ff_core_Pair.Pair(g_, g_)
|
|
450
433
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
451
434
|
const self2_ = (((_c) => {
|
|
452
|
-
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_)
|
|
453
436
|
}))(self_);
|
|
454
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), (() => {
|
|
455
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)})
|
|
@@ -475,10 +458,10 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
475
458
|
return ff_core_Pair.Pair(g_, g_)
|
|
476
459
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
477
460
|
const selfWithNoQ_ = (((_c) => {
|
|
478
|
-
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_)
|
|
479
462
|
}))(self_);
|
|
480
463
|
const selfWithQ_ = (((_c) => {
|
|
481
|
-
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_)
|
|
482
465
|
}))(selfWithNoQ_);
|
|
483
466
|
{
|
|
484
467
|
const _1 = definition_;
|
|
@@ -496,65 +479,53 @@ return
|
|
|
496
479
|
|
|
497
480
|
export function Resolver_resolveLetDefinition(self_, definition_, topLevel_) {
|
|
498
481
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, definition_.at_))) {
|
|
499
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None()))
|
|
482
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None(), topLevel_))
|
|
500
483
|
};
|
|
501
484
|
{
|
|
502
485
|
const _1 = definition_;
|
|
503
486
|
{
|
|
504
487
|
const _c = _1;
|
|
505
|
-
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))
|
|
506
|
-
return
|
|
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))
|
|
507
489
|
}
|
|
508
490
|
}
|
|
509
491
|
}
|
|
510
492
|
|
|
511
|
-
export function Resolver_resolveTerm(self_, term_, topLevel_) {
|
|
493
|
+
export function Resolver_resolveTerm(self_, term_, topLevel_, inField_ = false) {
|
|
512
494
|
{
|
|
513
|
-
const
|
|
514
|
-
|
|
515
|
-
const topLevel_a = topLevel_;
|
|
516
|
-
{
|
|
517
|
-
if(term_a.EString) {
|
|
495
|
+
const _1 = term_;
|
|
496
|
+
if(_1.EString) {
|
|
518
497
|
return term_
|
|
519
|
-
return
|
|
520
|
-
}
|
|
521
498
|
}
|
|
522
|
-
{
|
|
523
|
-
if(term_a.EChar) {
|
|
499
|
+
if(_1.EChar) {
|
|
524
500
|
return term_
|
|
525
|
-
return
|
|
526
|
-
}
|
|
527
501
|
}
|
|
528
|
-
{
|
|
529
|
-
if(term_a.EInt) {
|
|
502
|
+
if(_1.EInt) {
|
|
530
503
|
return term_
|
|
531
|
-
return
|
|
532
|
-
}
|
|
533
504
|
}
|
|
534
|
-
{
|
|
535
|
-
if(term_a.EFloat) {
|
|
505
|
+
if(_1.EFloat) {
|
|
536
506
|
return term_
|
|
537
|
-
return
|
|
538
|
-
}
|
|
539
507
|
}
|
|
540
|
-
{
|
|
541
|
-
|
|
542
|
-
const e_ = term_a;
|
|
508
|
+
if(_1.EVariable) {
|
|
509
|
+
const e_ = _1;
|
|
543
510
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
544
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), (() => {
|
|
545
512
|
return e_.at_
|
|
546
513
|
}));
|
|
547
514
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, at_))) {
|
|
548
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, at_), ff_core_Option.None()))
|
|
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))
|
|
549
516
|
}
|
|
550
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
|
+
};
|
|
551
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) => {
|
|
552
524
|
{
|
|
553
525
|
const _1 = e_;
|
|
554
526
|
{
|
|
555
527
|
const _c = _1;
|
|
556
528
|
return ff_compiler_Syntax.EVariable(_c.at_, _w1)
|
|
557
|
-
return
|
|
558
529
|
}
|
|
559
530
|
}
|
|
560
531
|
})), (() => {
|
|
@@ -562,29 +533,24 @@ return term_
|
|
|
562
533
|
}))
|
|
563
534
|
return
|
|
564
535
|
}
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
const
|
|
569
|
-
const t_ = term_a.elementType_;
|
|
570
|
-
const items_ = term_a.items_;
|
|
536
|
+
if(_1.EList) {
|
|
537
|
+
const at_ = _1.at_;
|
|
538
|
+
const t_ = _1.elementType_;
|
|
539
|
+
const items_ = _1.items_;
|
|
571
540
|
return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(self_, t_, topLevel_), ff_core_List.List_map(items_, ((_1) => {
|
|
572
541
|
{
|
|
573
542
|
const item_ = _1.first_;
|
|
574
543
|
const spread_ = _1.second_;
|
|
575
|
-
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
576
|
-
return
|
|
544
|
+
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_, false), spread_)
|
|
577
545
|
}
|
|
578
546
|
})))
|
|
579
547
|
return
|
|
580
548
|
}
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
const
|
|
585
|
-
const
|
|
586
|
-
const typeArguments_ = term_a.typeArguments_;
|
|
587
|
-
const arguments_ = term_a.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_;
|
|
588
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), (() => {
|
|
589
555
|
return name_
|
|
590
556
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -595,20 +561,17 @@ return ff_core_List.List_map(_w1, ((a_) => {
|
|
|
595
561
|
const _1 = a_;
|
|
596
562
|
{
|
|
597
563
|
const _c = _1;
|
|
598
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
599
|
-
return
|
|
564
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
600
565
|
}
|
|
601
566
|
}
|
|
602
567
|
}))
|
|
603
568
|
})))
|
|
604
569
|
return
|
|
605
570
|
}
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
const
|
|
610
|
-
const name_ = term_a.name_;
|
|
611
|
-
const typeArguments_ = term_a.typeArguments_;
|
|
571
|
+
if(_1.EVariantIs) {
|
|
572
|
+
const at_ = _1.at_;
|
|
573
|
+
const name_ = _1.name_;
|
|
574
|
+
const typeArguments_ = _1.typeArguments_;
|
|
612
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), (() => {
|
|
613
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)})
|
|
614
577
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -616,75 +579,61 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
616
579
|
})))
|
|
617
580
|
return
|
|
618
581
|
}
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
const
|
|
623
|
-
const
|
|
624
|
-
const record_ = term_a.record_;
|
|
625
|
-
const arguments_ = term_a.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_;
|
|
626
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), (() => {
|
|
627
588
|
return name_
|
|
628
|
-
})), 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_) => {
|
|
629
590
|
{
|
|
630
591
|
const _1 = f_;
|
|
631
592
|
{
|
|
632
593
|
const _c = _1;
|
|
633
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
634
|
-
return
|
|
594
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
635
595
|
}
|
|
636
596
|
}
|
|
637
597
|
})))
|
|
638
598
|
return
|
|
639
599
|
}
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
if(term_a.EField) {
|
|
643
|
-
const e_ = term_a;
|
|
600
|
+
if(_1.EField) {
|
|
601
|
+
const e_ = _1;
|
|
644
602
|
{
|
|
645
603
|
const _1 = e_;
|
|
646
604
|
{
|
|
647
605
|
const _c = _1;
|
|
648
|
-
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
649
|
-
return
|
|
606
|
+
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_, true), _c.field_)
|
|
650
607
|
}
|
|
651
608
|
}
|
|
652
609
|
return
|
|
653
610
|
}
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
const
|
|
658
|
-
const lambdaAt_ = term_a.lambda_.at_;
|
|
659
|
-
const cases_ = term_a.lambda_.cases_;
|
|
611
|
+
if(_1.ELambda) {
|
|
612
|
+
const at_ = _1.at_;
|
|
613
|
+
const lambdaAt_ = _1.lambda_.at_;
|
|
614
|
+
const cases_ = _1.lambda_.cases_;
|
|
660
615
|
const effect_ = ff_compiler_Resolver.Resolver_makeEffectArgument(self_, lambdaAt_, topLevel_);
|
|
661
616
|
return ff_compiler_Syntax.ELambda(at_, ff_compiler_Syntax.Lambda(lambdaAt_, effect_, ff_core_List.List_map(cases_, ((_w1) => {
|
|
662
617
|
return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
663
618
|
}))))
|
|
664
619
|
return
|
|
665
620
|
}
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
const
|
|
670
|
-
const
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
const
|
|
680
|
-
if(term_a.target_.DynamicCall) {
|
|
681
|
-
const target_ = term_a.target_;
|
|
682
|
-
const effect_ = term_a.effect_;
|
|
683
|
-
const typeArguments_ = term_a.typeArguments_;
|
|
684
|
-
const arguments_ = term_a.arguments_;
|
|
685
|
-
const dictionaries_ = term_a.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_;
|
|
686
635
|
return ff_compiler_Syntax.ECall(at_, (((_c) => {
|
|
687
|
-
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_)
|
|
688
637
|
}))(target_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
689
638
|
return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
690
639
|
})), ff_core_List.List_map(arguments_, ((a_) => {
|
|
@@ -692,44 +641,31 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
692
641
|
const _1 = a_;
|
|
693
642
|
{
|
|
694
643
|
const _c = _1;
|
|
695
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
696
|
-
return
|
|
644
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
697
645
|
}
|
|
698
646
|
}
|
|
699
647
|
})), dictionaries_)
|
|
700
648
|
return
|
|
701
649
|
}
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
{
|
|
705
|
-
if(term_a.ECall) {
|
|
706
|
-
const at_ = term_a.at_;
|
|
707
|
-
if(term_a.target_.StaticCall) {
|
|
650
|
+
if(_1.ECall && _1.target_.StaticCall) {
|
|
708
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)})
|
|
709
|
-
return
|
|
710
|
-
}
|
|
711
|
-
}
|
|
712
652
|
}
|
|
713
|
-
{
|
|
714
|
-
|
|
715
|
-
const
|
|
716
|
-
const fields_ = term_a.fields_;
|
|
653
|
+
if(_1.ERecord) {
|
|
654
|
+
const at_ = _1.at_;
|
|
655
|
+
const fields_ = _1.fields_;
|
|
717
656
|
return ff_compiler_Syntax.ERecord(at_, ff_core_List.List_map(fields_, ((f_) => {
|
|
718
657
|
{
|
|
719
658
|
const _1 = f_;
|
|
720
659
|
{
|
|
721
660
|
const _c = _1;
|
|
722
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
723
|
-
return
|
|
661
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
724
662
|
}
|
|
725
663
|
}
|
|
726
664
|
})))
|
|
727
665
|
return
|
|
728
666
|
}
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
if(term_a.EWildcard) {
|
|
732
|
-
const e_ = term_a;
|
|
667
|
+
if(_1.EWildcard) {
|
|
668
|
+
const e_ = _1;
|
|
733
669
|
if((e_.index_ === 0)) {
|
|
734
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)})
|
|
735
671
|
};
|
|
@@ -738,17 +674,14 @@ const _1 = e_;
|
|
|
738
674
|
{
|
|
739
675
|
const _c = _1;
|
|
740
676
|
return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
741
|
-
return
|
|
742
677
|
}
|
|
743
678
|
}
|
|
744
679
|
return
|
|
745
680
|
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
const
|
|
750
|
-
const functions_ = term_a.functions_;
|
|
751
|
-
const body_ = term_a.body_;
|
|
681
|
+
if(_1.EFunctions) {
|
|
682
|
+
const at_ = _1.at_;
|
|
683
|
+
const functions_ = _1.functions_;
|
|
684
|
+
const body_ = _1.body_;
|
|
752
685
|
const functionMap_ = ff_core_List.List_toMap(ff_core_List.List_map(ff_core_List.List_map(functions_, ((_w1) => {
|
|
753
686
|
return _w1.signature_.name_
|
|
754
687
|
})), ((name_) => {
|
|
@@ -760,83 +693,66 @@ return _w1.signature_
|
|
|
760
693
|
return ff_core_Pair.Pair(s_.name_, s_.at_)
|
|
761
694
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
762
695
|
const self2_ = (((_c) => {
|
|
763
|
-
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_)
|
|
764
697
|
}))(self_);
|
|
765
698
|
return ff_compiler_Syntax.EFunctions(at_, ff_core_List.List_map(functions_, ((_w1) => {
|
|
766
699
|
return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topLevel_, false)
|
|
767
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
700
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_, false))
|
|
768
701
|
return
|
|
769
702
|
}
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
if(term_a.ELet) {
|
|
773
|
-
const e_ = term_a;
|
|
703
|
+
if(_1.ELet) {
|
|
704
|
+
const e_ = _1;
|
|
774
705
|
const self2_ = (((_c) => {
|
|
775
|
-
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_)
|
|
776
707
|
}))(self_);
|
|
777
708
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
778
709
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, e_.at_))) {
|
|
779
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, e_.at_), ff_core_Option.None()))
|
|
710
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, e_.at_), ff_core_Option.None(), false))
|
|
780
711
|
}
|
|
781
712
|
};
|
|
782
713
|
{
|
|
783
714
|
const _1 = e_;
|
|
784
715
|
{
|
|
785
716
|
const _c = _1;
|
|
786
|
-
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_))
|
|
787
|
-
return
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
return
|
|
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))
|
|
791
718
|
}
|
|
792
719
|
}
|
|
793
|
-
{
|
|
794
|
-
if(term_a.ESequential) {
|
|
795
|
-
const at_ = term_a.at_;
|
|
796
|
-
const before_ = term_a.before_;
|
|
797
|
-
const after_ = term_a.after_;
|
|
798
|
-
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
799
720
|
return
|
|
800
721
|
}
|
|
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))
|
|
801
727
|
}
|
|
802
|
-
{
|
|
803
|
-
|
|
804
|
-
const
|
|
805
|
-
const
|
|
806
|
-
const
|
|
807
|
-
const value_ = term_a.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_;
|
|
808
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), (() => {
|
|
809
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)})
|
|
810
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
811
|
-
return
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
{
|
|
815
|
-
if(term_a.EAssignField) {
|
|
816
|
-
const at_ = term_a.at_;
|
|
817
|
-
const operator_ = term_a.operator_;
|
|
818
|
-
const record_ = term_a.record_;
|
|
819
|
-
const field_ = term_a.field_;
|
|
820
|
-
const value_ = term_a.value_;
|
|
821
|
-
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
735
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
822
736
|
return
|
|
823
737
|
}
|
|
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))
|
|
824
745
|
}
|
|
825
746
|
}
|
|
826
747
|
}
|
|
827
748
|
|
|
828
749
|
export function Resolver_resolveType(self_, type_, topLevel_) {
|
|
829
|
-
{
|
|
830
750
|
const self_a = self_;
|
|
831
751
|
const type_a = type_;
|
|
832
752
|
const topLevel_a = topLevel_;
|
|
833
|
-
{
|
|
834
753
|
if(type_a.TVariable) {
|
|
835
754
|
return type_
|
|
836
|
-
return
|
|
837
|
-
}
|
|
838
755
|
}
|
|
839
|
-
{
|
|
840
756
|
if(type_a.TConstructor) {
|
|
841
757
|
const constructor_ = type_a;
|
|
842
758
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
@@ -871,7 +787,6 @@ const _1 = constructor_;
|
|
|
871
787
|
{
|
|
872
788
|
const _c = _1;
|
|
873
789
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...arguments_, returnType_])
|
|
874
|
-
return
|
|
875
790
|
}
|
|
876
791
|
}
|
|
877
792
|
} else {
|
|
@@ -880,15 +795,12 @@ const _1 = constructor_;
|
|
|
880
795
|
{
|
|
881
796
|
const _c = _1;
|
|
882
797
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...generics_])
|
|
883
|
-
return
|
|
884
798
|
}
|
|
885
799
|
}
|
|
886
800
|
}
|
|
887
801
|
return
|
|
888
802
|
}
|
|
889
803
|
}
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
804
|
|
|
893
805
|
export function Resolver_makeEffectArgument(self_, at_, topLevel_) {
|
|
894
806
|
if(topLevel_) {
|
|
@@ -944,7 +856,7 @@ return ff_compiler_Syntax.DFunction(definition_.at_, signature_, body_)
|
|
|
944
856
|
|
|
945
857
|
export function Resolver_resolveSignature(self_, signature_, topLevel_, isInstanceMethod_) {
|
|
946
858
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, signature_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, signature_.at_))) {
|
|
947
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSignatureHook(signature_, isInstanceMethod_))
|
|
859
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSignatureHook(signature_, isInstanceMethod_, topLevel_))
|
|
948
860
|
};
|
|
949
861
|
const newSignature_ = (topLevel_
|
|
950
862
|
? (((_c) => {
|
|
@@ -971,7 +883,7 @@ const _1 = p_;
|
|
|
971
883
|
{
|
|
972
884
|
const _c = _1;
|
|
973
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) => {
|
|
974
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_)
|
|
886
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_, false)
|
|
975
887
|
})))
|
|
976
888
|
return
|
|
977
889
|
}
|
|
@@ -998,53 +910,31 @@ return ff_core_Pair.Pair(name_, name_)
|
|
|
998
910
|
const _1 = self_;
|
|
999
911
|
{
|
|
1000
912
|
const _c = _1;
|
|
1001
|
-
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_)
|
|
1002
|
-
return
|
|
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_)
|
|
1003
914
|
}
|
|
1004
915
|
}
|
|
1005
916
|
}
|
|
1006
917
|
|
|
1007
918
|
export function Resolver_resolveCase(self_, case_, topLevel_) {
|
|
1008
919
|
function findVariables_(pattern_) {
|
|
1009
|
-
{
|
|
1010
920
|
const pattern_a = pattern_;
|
|
1011
|
-
{
|
|
1012
921
|
if(pattern_a.PString) {
|
|
1013
922
|
return ff_core_Map.empty_()
|
|
1014
|
-
return
|
|
1015
923
|
}
|
|
1016
|
-
}
|
|
1017
|
-
{
|
|
1018
924
|
if(pattern_a.PInt) {
|
|
1019
925
|
return ff_core_Map.empty_()
|
|
1020
|
-
return
|
|
1021
926
|
}
|
|
1022
|
-
}
|
|
1023
|
-
{
|
|
1024
927
|
if(pattern_a.PChar) {
|
|
1025
928
|
return ff_core_Map.empty_()
|
|
1026
|
-
return
|
|
1027
929
|
}
|
|
1028
|
-
|
|
1029
|
-
{
|
|
1030
|
-
if(pattern_a.PVariable) {
|
|
930
|
+
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
1031
931
|
const at_ = pattern_a.at_;
|
|
1032
|
-
if(pattern_a.name_.Some) {
|
|
1033
932
|
const name_ = pattern_a.name_.value_;
|
|
1034
|
-
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_,
|
|
1035
|
-
return
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
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)
|
|
1038
934
|
}
|
|
1039
|
-
{
|
|
1040
|
-
if(pattern_a.PVariable) {
|
|
1041
|
-
if(pattern_a.name_.None) {
|
|
935
|
+
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
1042
936
|
return ff_core_Map.empty_()
|
|
1043
|
-
return
|
|
1044
937
|
}
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
{
|
|
1048
938
|
if(pattern_a.PVariant) {
|
|
1049
939
|
const patterns_ = pattern_a.patterns_;
|
|
1050
940
|
return ff_core_List.List_foldLeft(ff_core_List.List_map(patterns_, ((pattern_) => {
|
|
@@ -1054,27 +944,21 @@ return ff_core_Map.Map_addAll(_w1, _w2, ff_core_Ordering.ff_core_Ordering_Order$
|
|
|
1054
944
|
}))
|
|
1055
945
|
return
|
|
1056
946
|
}
|
|
1057
|
-
}
|
|
1058
|
-
{
|
|
1059
947
|
if(pattern_a.PVariantAs) {
|
|
1060
948
|
const at_ = pattern_a.at_;
|
|
949
|
+
const variant_ = pattern_a.name_;
|
|
1061
950
|
const variableAt_ = pattern_a.variableAt_;
|
|
1062
951
|
const variable_ = pattern_a.variable_;
|
|
1063
952
|
return ff_core_List.List_toMap(ff_core_List.List_map(ff_core_Option.Option_toList(variable_), ((x_) => {
|
|
1064
|
-
return ff_core_Pair.Pair(x_,
|
|
953
|
+
return ff_core_Pair.Pair(x_, ff_compiler_Resolver.CaseVariable(variableAt_, x_, ff_core_Option.Some(variant_)))
|
|
1065
954
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1066
955
|
return
|
|
1067
956
|
}
|
|
1068
|
-
}
|
|
1069
|
-
{
|
|
1070
957
|
if(pattern_a.PAlias) {
|
|
1071
958
|
const at_ = pattern_a.at_;
|
|
1072
959
|
const pattern_ = pattern_a.pattern_;
|
|
1073
960
|
const variable_ = pattern_a.variable_;
|
|
1074
|
-
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_,
|
|
1075
|
-
return
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
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)
|
|
1078
962
|
}
|
|
1079
963
|
}
|
|
1080
964
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -1086,58 +970,48 @@ let guards_ = [];
|
|
|
1086
970
|
const variableMap2_ = ff_core_List.List_foldLeft(case_.guards_, variableMap_, ((variableMap1_, g_) => {
|
|
1087
971
|
const self2_ = (((_c) => {
|
|
1088
972
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
1089
|
-
return p_.
|
|
973
|
+
return p_.name_
|
|
1090
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_) => {
|
|
1091
|
-
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_
|
|
1092
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_)
|
|
1093
979
|
}))(self_);
|
|
1094
980
|
const guard_ = (((_c) => {
|
|
1095
|
-
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_))
|
|
1096
982
|
}))(g_);
|
|
1097
983
|
guards_ = [guard_, ...guards_];
|
|
1098
984
|
return ff_core_Map.Map_addAll(variableMap1_, findVariables_(guard_.pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1099
985
|
}));
|
|
1100
986
|
const self3_ = (((_c) => {
|
|
1101
987
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
1102
|
-
return p_.
|
|
988
|
+
return p_.name_
|
|
1103
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_) => {
|
|
1104
|
-
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_
|
|
1105
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_)
|
|
1106
994
|
}))(self_);
|
|
1107
995
|
return ff_compiler_Syntax.MatchCase(case_.at_, ff_core_List.List_map(case_.patterns_, ((_w1) => {
|
|
1108
996
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
1109
|
-
})), 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))
|
|
1110
998
|
}
|
|
1111
999
|
|
|
1112
1000
|
export function Resolver_resolvePattern(self_, pattern_) {
|
|
1113
|
-
{
|
|
1114
1001
|
const self_a = self_;
|
|
1115
1002
|
const pattern_a = pattern_;
|
|
1116
|
-
{
|
|
1117
1003
|
if(pattern_a.PString) {
|
|
1118
1004
|
return pattern_
|
|
1119
|
-
return
|
|
1120
|
-
}
|
|
1121
1005
|
}
|
|
1122
|
-
{
|
|
1123
1006
|
if(pattern_a.PInt) {
|
|
1124
1007
|
return pattern_
|
|
1125
|
-
return
|
|
1126
|
-
}
|
|
1127
1008
|
}
|
|
1128
|
-
{
|
|
1129
1009
|
if(pattern_a.PChar) {
|
|
1130
1010
|
return pattern_
|
|
1131
|
-
return
|
|
1132
|
-
}
|
|
1133
1011
|
}
|
|
1134
|
-
{
|
|
1135
1012
|
if(pattern_a.PVariable) {
|
|
1136
1013
|
return pattern_
|
|
1137
|
-
return
|
|
1138
|
-
}
|
|
1139
1014
|
}
|
|
1140
|
-
{
|
|
1141
1015
|
if(pattern_a.PVariant) {
|
|
1142
1016
|
const at_ = pattern_a.at_;
|
|
1143
1017
|
const name_ = pattern_a.name_;
|
|
@@ -1149,10 +1023,7 @@ const newPatterns_ = ff_core_List.List_map(patterns_, ((_w1) => {
|
|
|
1149
1023
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
1150
1024
|
}));
|
|
1151
1025
|
return ff_compiler_Syntax.PVariant(at_, newName_, newPatterns_)
|
|
1152
|
-
return
|
|
1153
|
-
}
|
|
1154
1026
|
}
|
|
1155
|
-
{
|
|
1156
1027
|
if(pattern_a.PVariantAs) {
|
|
1157
1028
|
const at_ = pattern_a.at_;
|
|
1158
1029
|
const name_ = pattern_a.name_;
|
|
@@ -1162,33 +1033,22 @@ const newName_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_,
|
|
|
1162
1033
|
return name_
|
|
1163
1034
|
}));
|
|
1164
1035
|
return ff_compiler_Syntax.PVariantAs(at_, newName_, variableAt_, variable_)
|
|
1165
|
-
return
|
|
1166
|
-
}
|
|
1167
1036
|
}
|
|
1168
|
-
{
|
|
1169
1037
|
if(pattern_a.PAlias) {
|
|
1170
1038
|
const at_ = pattern_a.at_;
|
|
1171
1039
|
const pattern_ = pattern_a.pattern_;
|
|
1172
1040
|
const variable_ = pattern_a.variable_;
|
|
1173
1041
|
const newPattern_ = ff_compiler_Resolver.Resolver_resolvePattern(self_, pattern_);
|
|
1174
1042
|
return ff_compiler_Syntax.PAlias(at_, newPattern_, variable_)
|
|
1175
|
-
return
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
1043
|
}
|
|
1179
1044
|
}
|
|
1180
1045
|
|
|
1181
1046
|
export function Resolver_containsAsyncType(self_, type_) {
|
|
1182
|
-
{
|
|
1183
1047
|
const self_a = self_;
|
|
1184
1048
|
const type_a = type_;
|
|
1185
|
-
{
|
|
1186
1049
|
if(type_a.TVariable) {
|
|
1187
1050
|
return false
|
|
1188
|
-
return
|
|
1189
|
-
}
|
|
1190
1051
|
}
|
|
1191
|
-
{
|
|
1192
1052
|
if(type_a.TConstructor) {
|
|
1193
1053
|
const constructor_ = type_a;
|
|
1194
1054
|
const name_ = (ff_core_String.String_contains(constructor_.name_, "$")
|
|
@@ -1207,8 +1067,6 @@ return ff_compiler_Resolver.Resolver_containsAsyncType(self_, _w1)
|
|
|
1207
1067
|
return
|
|
1208
1068
|
}
|
|
1209
1069
|
}
|
|
1210
|
-
}
|
|
1211
|
-
}
|
|
1212
1070
|
|
|
1213
1071
|
export async function Resolver_freshUnificationVariable$(self_, at_, $task) {
|
|
1214
1072
|
const result_ = ff_compiler_Syntax.TVariable(at_, self_.state_.nextUnificationVariableIndex_);
|
|
@@ -1250,7 +1108,6 @@ return module2_
|
|
|
1250
1108
|
export async function Resolver_checkInstanceType$(self_, type_, $task) {
|
|
1251
1109
|
{
|
|
1252
1110
|
const _1 = type_;
|
|
1253
|
-
{
|
|
1254
1111
|
if(_1.TConstructor) {
|
|
1255
1112
|
const name_ = _1.name_;
|
|
1256
1113
|
const typeArguments_ = _1.generics_;
|
|
@@ -1262,7 +1119,6 @@ ff_compiler_Resolver.Resolver_checkInstanceType(self_, _w1)
|
|
|
1262
1119
|
}))
|
|
1263
1120
|
return
|
|
1264
1121
|
}
|
|
1265
|
-
}
|
|
1266
1122
|
{
|
|
1267
1123
|
|
|
1268
1124
|
return
|
|
@@ -1277,18 +1133,13 @@ ff_core_List.List_each(imports_, ((import_) => {
|
|
|
1277
1133
|
const _1 = ff_core_List.List_find(modules_, ((_w1) => {
|
|
1278
1134
|
return (ff_core_String.String_dropLast(_w1.file_, 3) === import_.file_)
|
|
1279
1135
|
}));
|
|
1280
|
-
{
|
|
1281
1136
|
if(_1.Some) {
|
|
1282
1137
|
const module_ = _1.value_;
|
|
1283
1138
|
resolver_ = ff_compiler_Resolver.Resolver_processDefinitions(resolver_, module_, ff_core_Option.Some(import_.alias_))
|
|
1284
1139
|
return
|
|
1285
1140
|
}
|
|
1286
|
-
}
|
|
1287
|
-
{
|
|
1288
1141
|
if(_1.None) {
|
|
1289
1142
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(import_.at_, ("No such module: " + import_.file_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1290
|
-
return
|
|
1291
|
-
}
|
|
1292
1143
|
}
|
|
1293
1144
|
}
|
|
1294
1145
|
}));
|
|
@@ -1300,28 +1151,18 @@ function entry_(name_, unqualified_) {
|
|
|
1300
1151
|
const full_ = ((((ff_compiler_Syntax.PackagePair_groupName(module_.packagePair_, ":") + "/") + ff_core_String.String_dropLast(module_.file_, 3)) + ".") + name_);
|
|
1301
1152
|
{
|
|
1302
1153
|
const _1 = importAlias_;
|
|
1303
|
-
{
|
|
1304
1154
|
if(_1.None) {
|
|
1305
1155
|
return [ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
1306
|
-
return
|
|
1307
|
-
}
|
|
1308
1156
|
}
|
|
1309
|
-
{
|
|
1310
1157
|
if(_1.Some) {
|
|
1311
1158
|
const alias_ = _1.value_;
|
|
1312
|
-
|
|
1313
|
-
if(_guard1) {
|
|
1159
|
+
if(unqualified_) {
|
|
1314
1160
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
1315
|
-
return
|
|
1316
|
-
}
|
|
1317
1161
|
}
|
|
1318
1162
|
}
|
|
1319
|
-
{
|
|
1320
1163
|
if(_1.Some) {
|
|
1321
1164
|
const alias_ = _1.value_;
|
|
1322
1165
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(full_, full_)]
|
|
1323
|
-
return
|
|
1324
|
-
}
|
|
1325
1166
|
}
|
|
1326
1167
|
}
|
|
1327
1168
|
}
|
|
@@ -1403,21 +1244,20 @@ return entry_(_w1.name_, true)
|
|
|
1403
1244
|
const _1 = self_;
|
|
1404
1245
|
{
|
|
1405
1246
|
const _c = _1;
|
|
1406
|
-
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_)
|
|
1407
|
-
return
|
|
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_)
|
|
1408
1248
|
}
|
|
1409
1249
|
}
|
|
1410
1250
|
}
|
|
1411
1251
|
|
|
1412
1252
|
export async function Resolver_resolveTypeDefinition$(self_, definition_, $task) {
|
|
1413
1253
|
if(ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_)) {
|
|
1414
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None()))
|
|
1254
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None(), true))
|
|
1415
1255
|
};
|
|
1416
1256
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
1417
1257
|
return ff_core_Pair.Pair(g_, g_)
|
|
1418
1258
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1419
1259
|
const self2_ = (((_c) => {
|
|
1420
|
-
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_)
|
|
1421
1261
|
}))(self_);
|
|
1422
1262
|
if((!ff_core_Option.Option_any(ff_core_List.List_first(definition_.generics_), ((_w1) => {
|
|
1423
1263
|
return (_w1 === "Q$")
|
|
@@ -1446,14 +1286,14 @@ const _1 = f_;
|
|
|
1446
1286
|
{
|
|
1447
1287
|
const _c = _1;
|
|
1448
1288
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
1449
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
1289
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
1450
1290
|
})))
|
|
1451
1291
|
return
|
|
1452
1292
|
}
|
|
1453
1293
|
}
|
|
1454
1294
|
})), ff_core_List.List_map(definition_.variants_, ((v_) => {
|
|
1455
1295
|
if(ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, v_.at_)) {
|
|
1456
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(v_.name_, v_.at_, v_.at_), ff_core_Option.None()))
|
|
1296
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(v_.name_, v_.at_, v_.at_), ff_core_Option.None(), true))
|
|
1457
1297
|
};
|
|
1458
1298
|
{
|
|
1459
1299
|
const _1 = v_;
|
|
@@ -1469,7 +1309,7 @@ const _1 = f_;
|
|
|
1469
1309
|
{
|
|
1470
1310
|
const _c = _1;
|
|
1471
1311
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
1472
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
1312
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
1473
1313
|
})))
|
|
1474
1314
|
return
|
|
1475
1315
|
}
|
|
@@ -1486,13 +1326,13 @@ return
|
|
|
1486
1326
|
|
|
1487
1327
|
export async function Resolver_resolveTraitDefinition$(self_, definition_, $task) {
|
|
1488
1328
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, definition_.at_))) {
|
|
1489
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None()))
|
|
1329
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None(), true))
|
|
1490
1330
|
};
|
|
1491
1331
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
1492
1332
|
return ff_core_Pair.Pair(g_, g_)
|
|
1493
1333
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1494
1334
|
const self2_ = (((_c) => {
|
|
1495
|
-
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_)
|
|
1496
1336
|
}))(self_);
|
|
1497
1337
|
{
|
|
1498
1338
|
const _1 = definition_;
|
|
@@ -1512,16 +1352,12 @@ return (_w1.name_ === name_)
|
|
|
1512
1352
|
const function1_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(lambda_));
|
|
1513
1353
|
const function2_ = ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, function1_, true, false);
|
|
1514
1354
|
return ff_core_Pair.Pair(name_, (((_1) => {
|
|
1515
|
-
{
|
|
1516
1355
|
if(_1.FireflyTarget) {
|
|
1517
1356
|
const lambda_ = _1.lambda_;
|
|
1518
1357
|
return lambda_
|
|
1519
|
-
return
|
|
1520
|
-
}
|
|
1521
1358
|
}
|
|
1522
1359
|
{
|
|
1523
1360
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(signature_.at_, "Internal error: Expected method default to be a lambda"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1524
|
-
return
|
|
1525
1361
|
}
|
|
1526
1362
|
}))(function2_.body_))
|
|
1527
1363
|
return
|
|
@@ -1537,13 +1373,13 @@ const traitDefinedAt_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.tra
|
|
|
1537
1373
|
return definition_.at_
|
|
1538
1374
|
}));
|
|
1539
1375
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, traitDefinedAt_))) {
|
|
1540
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.traitName_, definition_.at_, traitDefinedAt_), ff_core_Option.None()))
|
|
1376
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.traitName_, definition_.at_, traitDefinedAt_), ff_core_Option.None(), true))
|
|
1541
1377
|
};
|
|
1542
1378
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
1543
1379
|
return ff_core_Pair.Pair(g_, g_)
|
|
1544
1380
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1545
1381
|
const self2_ = (((_c) => {
|
|
1546
|
-
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_)
|
|
1547
1383
|
}))(self_);
|
|
1548
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), (() => {
|
|
1549
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)})
|
|
@@ -1569,10 +1405,10 @@ const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.gene
|
|
|
1569
1405
|
return ff_core_Pair.Pair(g_, g_)
|
|
1570
1406
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1571
1407
|
const selfWithNoQ_ = (((_c) => {
|
|
1572
|
-
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_)
|
|
1573
1409
|
}))(self_);
|
|
1574
1410
|
const selfWithQ_ = (((_c) => {
|
|
1575
|
-
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_)
|
|
1576
1412
|
}))(selfWithNoQ_);
|
|
1577
1413
|
{
|
|
1578
1414
|
const _1 = definition_;
|
|
@@ -1590,65 +1426,53 @@ return
|
|
|
1590
1426
|
|
|
1591
1427
|
export async function Resolver_resolveLetDefinition$(self_, definition_, topLevel_, $task) {
|
|
1592
1428
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, definition_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, definition_.at_))) {
|
|
1593
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None()))
|
|
1429
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(definition_.name_, definition_.at_, definition_.at_), ff_core_Option.None(), topLevel_))
|
|
1594
1430
|
};
|
|
1595
1431
|
{
|
|
1596
1432
|
const _1 = definition_;
|
|
1597
1433
|
{
|
|
1598
1434
|
const _c = _1;
|
|
1599
|
-
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))
|
|
1600
|
-
return
|
|
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))
|
|
1601
1436
|
}
|
|
1602
1437
|
}
|
|
1603
1438
|
}
|
|
1604
1439
|
|
|
1605
|
-
export async function Resolver_resolveTerm$(self_, term_, topLevel_, $task) {
|
|
1440
|
+
export async function Resolver_resolveTerm$(self_, term_, topLevel_, inField_ = false, $task) {
|
|
1606
1441
|
{
|
|
1607
|
-
const
|
|
1608
|
-
|
|
1609
|
-
const topLevel_a = topLevel_;
|
|
1610
|
-
{
|
|
1611
|
-
if(term_a.EString) {
|
|
1442
|
+
const _1 = term_;
|
|
1443
|
+
if(_1.EString) {
|
|
1612
1444
|
return term_
|
|
1613
|
-
return
|
|
1614
|
-
}
|
|
1615
1445
|
}
|
|
1616
|
-
{
|
|
1617
|
-
if(term_a.EChar) {
|
|
1446
|
+
if(_1.EChar) {
|
|
1618
1447
|
return term_
|
|
1619
|
-
return
|
|
1620
|
-
}
|
|
1621
1448
|
}
|
|
1622
|
-
{
|
|
1623
|
-
if(term_a.EInt) {
|
|
1449
|
+
if(_1.EInt) {
|
|
1624
1450
|
return term_
|
|
1625
|
-
return
|
|
1626
|
-
}
|
|
1627
1451
|
}
|
|
1628
|
-
{
|
|
1629
|
-
if(term_a.EFloat) {
|
|
1452
|
+
if(_1.EFloat) {
|
|
1630
1453
|
return term_
|
|
1631
|
-
return
|
|
1632
|
-
}
|
|
1633
1454
|
}
|
|
1634
|
-
{
|
|
1635
|
-
|
|
1636
|
-
const e_ = term_a;
|
|
1455
|
+
if(_1.EVariable) {
|
|
1456
|
+
const e_ = _1;
|
|
1637
1457
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
1638
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), (() => {
|
|
1639
1459
|
return e_.at_
|
|
1640
1460
|
}));
|
|
1641
1461
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, at_))) {
|
|
1642
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, at_), ff_core_Option.None()))
|
|
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))
|
|
1643
1463
|
}
|
|
1644
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
|
+
};
|
|
1645
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) => {
|
|
1646
1471
|
{
|
|
1647
1472
|
const _1 = e_;
|
|
1648
1473
|
{
|
|
1649
1474
|
const _c = _1;
|
|
1650
1475
|
return ff_compiler_Syntax.EVariable(_c.at_, _w1)
|
|
1651
|
-
return
|
|
1652
1476
|
}
|
|
1653
1477
|
}
|
|
1654
1478
|
})), (() => {
|
|
@@ -1656,29 +1480,24 @@ return term_
|
|
|
1656
1480
|
}))
|
|
1657
1481
|
return
|
|
1658
1482
|
}
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
const
|
|
1663
|
-
const t_ = term_a.elementType_;
|
|
1664
|
-
const items_ = term_a.items_;
|
|
1483
|
+
if(_1.EList) {
|
|
1484
|
+
const at_ = _1.at_;
|
|
1485
|
+
const t_ = _1.elementType_;
|
|
1486
|
+
const items_ = _1.items_;
|
|
1665
1487
|
return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(self_, t_, topLevel_), ff_core_List.List_map(items_, ((_1) => {
|
|
1666
1488
|
{
|
|
1667
1489
|
const item_ = _1.first_;
|
|
1668
1490
|
const spread_ = _1.second_;
|
|
1669
|
-
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
1670
|
-
return
|
|
1491
|
+
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_, false), spread_)
|
|
1671
1492
|
}
|
|
1672
1493
|
})))
|
|
1673
1494
|
return
|
|
1674
1495
|
}
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
const
|
|
1679
|
-
const
|
|
1680
|
-
const typeArguments_ = term_a.typeArguments_;
|
|
1681
|
-
const arguments_ = term_a.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_;
|
|
1682
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), (() => {
|
|
1683
1502
|
return name_
|
|
1684
1503
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -1689,20 +1508,17 @@ return ff_core_List.List_map(_w1, ((a_) => {
|
|
|
1689
1508
|
const _1 = a_;
|
|
1690
1509
|
{
|
|
1691
1510
|
const _c = _1;
|
|
1692
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1693
|
-
return
|
|
1511
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
1694
1512
|
}
|
|
1695
1513
|
}
|
|
1696
1514
|
}))
|
|
1697
1515
|
})))
|
|
1698
1516
|
return
|
|
1699
1517
|
}
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
const
|
|
1704
|
-
const name_ = term_a.name_;
|
|
1705
|
-
const typeArguments_ = term_a.typeArguments_;
|
|
1518
|
+
if(_1.EVariantIs) {
|
|
1519
|
+
const at_ = _1.at_;
|
|
1520
|
+
const name_ = _1.name_;
|
|
1521
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1706
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), (() => {
|
|
1707
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)})
|
|
1708
1524
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -1710,75 +1526,61 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1710
1526
|
})))
|
|
1711
1527
|
return
|
|
1712
1528
|
}
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
const
|
|
1717
|
-
const
|
|
1718
|
-
const record_ = term_a.record_;
|
|
1719
|
-
const arguments_ = term_a.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_;
|
|
1720
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), (() => {
|
|
1721
1535
|
return name_
|
|
1722
|
-
})), 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_) => {
|
|
1723
1537
|
{
|
|
1724
1538
|
const _1 = f_;
|
|
1725
1539
|
{
|
|
1726
1540
|
const _c = _1;
|
|
1727
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1728
|
-
return
|
|
1541
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
1729
1542
|
}
|
|
1730
1543
|
}
|
|
1731
1544
|
})))
|
|
1732
1545
|
return
|
|
1733
1546
|
}
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
if(term_a.EField) {
|
|
1737
|
-
const e_ = term_a;
|
|
1547
|
+
if(_1.EField) {
|
|
1548
|
+
const e_ = _1;
|
|
1738
1549
|
{
|
|
1739
1550
|
const _1 = e_;
|
|
1740
1551
|
{
|
|
1741
1552
|
const _c = _1;
|
|
1742
|
-
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
1743
|
-
return
|
|
1553
|
+
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_, true), _c.field_)
|
|
1744
1554
|
}
|
|
1745
1555
|
}
|
|
1746
1556
|
return
|
|
1747
1557
|
}
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
const
|
|
1752
|
-
const lambdaAt_ = term_a.lambda_.at_;
|
|
1753
|
-
const cases_ = term_a.lambda_.cases_;
|
|
1558
|
+
if(_1.ELambda) {
|
|
1559
|
+
const at_ = _1.at_;
|
|
1560
|
+
const lambdaAt_ = _1.lambda_.at_;
|
|
1561
|
+
const cases_ = _1.lambda_.cases_;
|
|
1754
1562
|
const effect_ = ff_compiler_Resolver.Resolver_makeEffectArgument(self_, lambdaAt_, topLevel_);
|
|
1755
1563
|
return ff_compiler_Syntax.ELambda(at_, ff_compiler_Syntax.Lambda(lambdaAt_, effect_, ff_core_List.List_map(cases_, ((_w1) => {
|
|
1756
1564
|
return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
1757
1565
|
}))))
|
|
1758
1566
|
return
|
|
1759
1567
|
}
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
const
|
|
1764
|
-
const
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
const
|
|
1774
|
-
if(term_a.target_.DynamicCall) {
|
|
1775
|
-
const target_ = term_a.target_;
|
|
1776
|
-
const effect_ = term_a.effect_;
|
|
1777
|
-
const typeArguments_ = term_a.typeArguments_;
|
|
1778
|
-
const arguments_ = term_a.arguments_;
|
|
1779
|
-
const dictionaries_ = term_a.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_;
|
|
1780
1582
|
return ff_compiler_Syntax.ECall(at_, (((_c) => {
|
|
1781
|
-
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_)
|
|
1782
1584
|
}))(target_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
1783
1585
|
return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
1784
1586
|
})), ff_core_List.List_map(arguments_, ((a_) => {
|
|
@@ -1786,44 +1588,31 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1786
1588
|
const _1 = a_;
|
|
1787
1589
|
{
|
|
1788
1590
|
const _c = _1;
|
|
1789
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1790
|
-
return
|
|
1591
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
1791
1592
|
}
|
|
1792
1593
|
}
|
|
1793
1594
|
})), dictionaries_)
|
|
1794
1595
|
return
|
|
1795
1596
|
}
|
|
1796
|
-
|
|
1797
|
-
}
|
|
1798
|
-
{
|
|
1799
|
-
if(term_a.ECall) {
|
|
1800
|
-
const at_ = term_a.at_;
|
|
1801
|
-
if(term_a.target_.StaticCall) {
|
|
1597
|
+
if(_1.ECall && _1.target_.StaticCall) {
|
|
1802
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)})
|
|
1803
|
-
return
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
1599
|
}
|
|
1807
|
-
{
|
|
1808
|
-
|
|
1809
|
-
const
|
|
1810
|
-
const fields_ = term_a.fields_;
|
|
1600
|
+
if(_1.ERecord) {
|
|
1601
|
+
const at_ = _1.at_;
|
|
1602
|
+
const fields_ = _1.fields_;
|
|
1811
1603
|
return ff_compiler_Syntax.ERecord(at_, ff_core_List.List_map(fields_, ((f_) => {
|
|
1812
1604
|
{
|
|
1813
1605
|
const _1 = f_;
|
|
1814
1606
|
{
|
|
1815
1607
|
const _c = _1;
|
|
1816
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1817
|
-
return
|
|
1608
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
1818
1609
|
}
|
|
1819
1610
|
}
|
|
1820
1611
|
})))
|
|
1821
1612
|
return
|
|
1822
1613
|
}
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
if(term_a.EWildcard) {
|
|
1826
|
-
const e_ = term_a;
|
|
1614
|
+
if(_1.EWildcard) {
|
|
1615
|
+
const e_ = _1;
|
|
1827
1616
|
if((e_.index_ === 0)) {
|
|
1828
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)})
|
|
1829
1618
|
};
|
|
@@ -1832,17 +1621,14 @@ const _1 = e_;
|
|
|
1832
1621
|
{
|
|
1833
1622
|
const _c = _1;
|
|
1834
1623
|
return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
1835
|
-
return
|
|
1836
1624
|
}
|
|
1837
1625
|
}
|
|
1838
1626
|
return
|
|
1839
1627
|
}
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
const
|
|
1844
|
-
const functions_ = term_a.functions_;
|
|
1845
|
-
const body_ = term_a.body_;
|
|
1628
|
+
if(_1.EFunctions) {
|
|
1629
|
+
const at_ = _1.at_;
|
|
1630
|
+
const functions_ = _1.functions_;
|
|
1631
|
+
const body_ = _1.body_;
|
|
1846
1632
|
const functionMap_ = ff_core_List.List_toMap(ff_core_List.List_map(ff_core_List.List_map(functions_, ((_w1) => {
|
|
1847
1633
|
return _w1.signature_.name_
|
|
1848
1634
|
})), ((name_) => {
|
|
@@ -1854,83 +1640,66 @@ return _w1.signature_
|
|
|
1854
1640
|
return ff_core_Pair.Pair(s_.name_, s_.at_)
|
|
1855
1641
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String);
|
|
1856
1642
|
const self2_ = (((_c) => {
|
|
1857
|
-
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_)
|
|
1858
1644
|
}))(self_);
|
|
1859
1645
|
return ff_compiler_Syntax.EFunctions(at_, ff_core_List.List_map(functions_, ((_w1) => {
|
|
1860
1646
|
return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topLevel_, false)
|
|
1861
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
1647
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_, false))
|
|
1862
1648
|
return
|
|
1863
1649
|
}
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
if(term_a.ELet) {
|
|
1867
|
-
const e_ = term_a;
|
|
1650
|
+
if(_1.ELet) {
|
|
1651
|
+
const e_ = _1;
|
|
1868
1652
|
const self2_ = (((_c) => {
|
|
1869
|
-
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_)
|
|
1870
1654
|
}))(self_);
|
|
1871
1655
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
1872
1656
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, e_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, e_.at_))) {
|
|
1873
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, e_.at_), ff_core_Option.None()))
|
|
1657
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymbolHook(ff_compiler_LspHook.SymbolHook(e_.name_, e_.at_, e_.at_), ff_core_Option.None(), false))
|
|
1874
1658
|
}
|
|
1875
1659
|
};
|
|
1876
1660
|
{
|
|
1877
1661
|
const _1 = e_;
|
|
1878
1662
|
{
|
|
1879
1663
|
const _c = _1;
|
|
1880
|
-
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_))
|
|
1881
|
-
return
|
|
1882
|
-
}
|
|
1883
|
-
}
|
|
1884
|
-
return
|
|
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))
|
|
1885
1665
|
}
|
|
1886
1666
|
}
|
|
1887
|
-
{
|
|
1888
|
-
if(term_a.ESequential) {
|
|
1889
|
-
const at_ = term_a.at_;
|
|
1890
|
-
const before_ = term_a.before_;
|
|
1891
|
-
const after_ = term_a.after_;
|
|
1892
|
-
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
1893
1667
|
return
|
|
1894
1668
|
}
|
|
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))
|
|
1895
1674
|
}
|
|
1896
|
-
{
|
|
1897
|
-
|
|
1898
|
-
const
|
|
1899
|
-
const
|
|
1900
|
-
const
|
|
1901
|
-
const value_ = term_a.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_;
|
|
1902
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), (() => {
|
|
1903
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)})
|
|
1904
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1905
|
-
return
|
|
1906
|
-
}
|
|
1907
|
-
}
|
|
1908
|
-
{
|
|
1909
|
-
if(term_a.EAssignField) {
|
|
1910
|
-
const at_ = term_a.at_;
|
|
1911
|
-
const operator_ = term_a.operator_;
|
|
1912
|
-
const record_ = term_a.record_;
|
|
1913
|
-
const field_ = term_a.field_;
|
|
1914
|
-
const value_ = term_a.value_;
|
|
1915
|
-
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1682
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
1916
1683
|
return
|
|
1917
1684
|
}
|
|
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))
|
|
1918
1692
|
}
|
|
1919
1693
|
}
|
|
1920
1694
|
}
|
|
1921
1695
|
|
|
1922
1696
|
export async function Resolver_resolveType$(self_, type_, topLevel_, $task) {
|
|
1923
|
-
{
|
|
1924
1697
|
const self_a = self_;
|
|
1925
1698
|
const type_a = type_;
|
|
1926
1699
|
const topLevel_a = topLevel_;
|
|
1927
|
-
{
|
|
1928
1700
|
if(type_a.TVariable) {
|
|
1929
1701
|
return type_
|
|
1930
|
-
return
|
|
1931
|
-
}
|
|
1932
1702
|
}
|
|
1933
|
-
{
|
|
1934
1703
|
if(type_a.TConstructor) {
|
|
1935
1704
|
const constructor_ = type_a;
|
|
1936
1705
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
@@ -1965,7 +1734,6 @@ const _1 = constructor_;
|
|
|
1965
1734
|
{
|
|
1966
1735
|
const _c = _1;
|
|
1967
1736
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...arguments_, returnType_])
|
|
1968
|
-
return
|
|
1969
1737
|
}
|
|
1970
1738
|
}
|
|
1971
1739
|
} else {
|
|
@@ -1974,15 +1742,12 @@ const _1 = constructor_;
|
|
|
1974
1742
|
{
|
|
1975
1743
|
const _c = _1;
|
|
1976
1744
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...generics_])
|
|
1977
|
-
return
|
|
1978
1745
|
}
|
|
1979
1746
|
}
|
|
1980
1747
|
}
|
|
1981
1748
|
return
|
|
1982
1749
|
}
|
|
1983
1750
|
}
|
|
1984
|
-
}
|
|
1985
|
-
}
|
|
1986
1751
|
|
|
1987
1752
|
export async function Resolver_makeEffectArgument$(self_, at_, topLevel_, $task) {
|
|
1988
1753
|
if(topLevel_) {
|
|
@@ -2038,7 +1803,7 @@ return ff_compiler_Syntax.DFunction(definition_.at_, signature_, body_)
|
|
|
2038
1803
|
|
|
2039
1804
|
export async function Resolver_resolveSignature$(self_, signature_, topLevel_, isInstanceMethod_, $task) {
|
|
2040
1805
|
if((ff_compiler_LspHook.LspHook_isAt(self_.lspHook_, signature_.at_) || ff_compiler_LspHook.LspHook_isDefinedAt(self_.lspHook_, signature_.at_))) {
|
|
2041
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSignatureHook(signature_, isInstanceMethod_))
|
|
1806
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSignatureHook(signature_, isInstanceMethod_, topLevel_))
|
|
2042
1807
|
};
|
|
2043
1808
|
const newSignature_ = (topLevel_
|
|
2044
1809
|
? (((_c) => {
|
|
@@ -2065,7 +1830,7 @@ const _1 = p_;
|
|
|
2065
1830
|
{
|
|
2066
1831
|
const _c = _1;
|
|
2067
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) => {
|
|
2068
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_)
|
|
1833
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_, false)
|
|
2069
1834
|
})))
|
|
2070
1835
|
return
|
|
2071
1836
|
}
|
|
@@ -2092,53 +1857,31 @@ return ff_core_Pair.Pair(name_, name_)
|
|
|
2092
1857
|
const _1 = self_;
|
|
2093
1858
|
{
|
|
2094
1859
|
const _c = _1;
|
|
2095
|
-
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_)
|
|
2096
|
-
return
|
|
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_)
|
|
2097
1861
|
}
|
|
2098
1862
|
}
|
|
2099
1863
|
}
|
|
2100
1864
|
|
|
2101
1865
|
export async function Resolver_resolveCase$(self_, case_, topLevel_, $task) {
|
|
2102
1866
|
function findVariables_(pattern_) {
|
|
2103
|
-
{
|
|
2104
1867
|
const pattern_a = pattern_;
|
|
2105
|
-
{
|
|
2106
1868
|
if(pattern_a.PString) {
|
|
2107
1869
|
return ff_core_Map.empty_()
|
|
2108
|
-
return
|
|
2109
1870
|
}
|
|
2110
|
-
}
|
|
2111
|
-
{
|
|
2112
1871
|
if(pattern_a.PInt) {
|
|
2113
1872
|
return ff_core_Map.empty_()
|
|
2114
|
-
return
|
|
2115
1873
|
}
|
|
2116
|
-
}
|
|
2117
|
-
{
|
|
2118
1874
|
if(pattern_a.PChar) {
|
|
2119
1875
|
return ff_core_Map.empty_()
|
|
2120
|
-
return
|
|
2121
1876
|
}
|
|
2122
|
-
|
|
2123
|
-
{
|
|
2124
|
-
if(pattern_a.PVariable) {
|
|
1877
|
+
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
2125
1878
|
const at_ = pattern_a.at_;
|
|
2126
|
-
if(pattern_a.name_.Some) {
|
|
2127
1879
|
const name_ = pattern_a.name_.value_;
|
|
2128
|
-
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_,
|
|
2129
|
-
return
|
|
2130
|
-
}
|
|
2131
|
-
}
|
|
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)
|
|
2132
1881
|
}
|
|
2133
|
-
{
|
|
2134
|
-
if(pattern_a.PVariable) {
|
|
2135
|
-
if(pattern_a.name_.None) {
|
|
1882
|
+
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
2136
1883
|
return ff_core_Map.empty_()
|
|
2137
|
-
return
|
|
2138
|
-
}
|
|
2139
|
-
}
|
|
2140
1884
|
}
|
|
2141
|
-
{
|
|
2142
1885
|
if(pattern_a.PVariant) {
|
|
2143
1886
|
const patterns_ = pattern_a.patterns_;
|
|
2144
1887
|
return ff_core_List.List_foldLeft(ff_core_List.List_map(patterns_, ((pattern_) => {
|
|
@@ -2148,27 +1891,21 @@ return ff_core_Map.Map_addAll(_w1, _w2, ff_core_Ordering.ff_core_Ordering_Order$
|
|
|
2148
1891
|
}))
|
|
2149
1892
|
return
|
|
2150
1893
|
}
|
|
2151
|
-
}
|
|
2152
|
-
{
|
|
2153
1894
|
if(pattern_a.PVariantAs) {
|
|
2154
1895
|
const at_ = pattern_a.at_;
|
|
1896
|
+
const variant_ = pattern_a.name_;
|
|
2155
1897
|
const variableAt_ = pattern_a.variableAt_;
|
|
2156
1898
|
const variable_ = pattern_a.variable_;
|
|
2157
1899
|
return ff_core_List.List_toMap(ff_core_List.List_map(ff_core_Option.Option_toList(variable_), ((x_) => {
|
|
2158
|
-
return ff_core_Pair.Pair(x_,
|
|
1900
|
+
return ff_core_Pair.Pair(x_, ff_compiler_Resolver.CaseVariable(variableAt_, x_, ff_core_Option.Some(variant_)))
|
|
2159
1901
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
2160
1902
|
return
|
|
2161
1903
|
}
|
|
2162
|
-
}
|
|
2163
|
-
{
|
|
2164
1904
|
if(pattern_a.PAlias) {
|
|
2165
1905
|
const at_ = pattern_a.at_;
|
|
2166
1906
|
const pattern_ = pattern_a.pattern_;
|
|
2167
1907
|
const variable_ = pattern_a.variable_;
|
|
2168
|
-
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_,
|
|
2169
|
-
return
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
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)
|
|
2172
1909
|
}
|
|
2173
1910
|
}
|
|
2174
1911
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -2180,58 +1917,48 @@ let guards_ = [];
|
|
|
2180
1917
|
const variableMap2_ = ff_core_List.List_foldLeft(case_.guards_, variableMap_, ((variableMap1_, g_) => {
|
|
2181
1918
|
const self2_ = (((_c) => {
|
|
2182
1919
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
2183
|
-
return p_.
|
|
1920
|
+
return p_.name_
|
|
2184
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_) => {
|
|
2185
|
-
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_
|
|
2186
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_)
|
|
2187
1926
|
}))(self_);
|
|
2188
1927
|
const guard_ = (((_c) => {
|
|
2189
|
-
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_))
|
|
2190
1929
|
}))(g_);
|
|
2191
1930
|
guards_ = [guard_, ...guards_];
|
|
2192
1931
|
return ff_core_Map.Map_addAll(variableMap1_, findVariables_(guard_.pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
2193
1932
|
}));
|
|
2194
1933
|
const self3_ = (((_c) => {
|
|
2195
1934
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
2196
|
-
return p_.
|
|
1935
|
+
return p_.name_
|
|
2197
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_) => {
|
|
2198
|
-
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_
|
|
2199
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_)
|
|
2200
1941
|
}))(self_);
|
|
2201
1942
|
return ff_compiler_Syntax.MatchCase(case_.at_, ff_core_List.List_map(case_.patterns_, ((_w1) => {
|
|
2202
1943
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
2203
|
-
})), 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))
|
|
2204
1945
|
}
|
|
2205
1946
|
|
|
2206
1947
|
export async function Resolver_resolvePattern$(self_, pattern_, $task) {
|
|
2207
|
-
{
|
|
2208
1948
|
const self_a = self_;
|
|
2209
1949
|
const pattern_a = pattern_;
|
|
2210
|
-
{
|
|
2211
1950
|
if(pattern_a.PString) {
|
|
2212
1951
|
return pattern_
|
|
2213
|
-
return
|
|
2214
|
-
}
|
|
2215
1952
|
}
|
|
2216
|
-
{
|
|
2217
1953
|
if(pattern_a.PInt) {
|
|
2218
1954
|
return pattern_
|
|
2219
|
-
return
|
|
2220
|
-
}
|
|
2221
1955
|
}
|
|
2222
|
-
{
|
|
2223
1956
|
if(pattern_a.PChar) {
|
|
2224
1957
|
return pattern_
|
|
2225
|
-
return
|
|
2226
|
-
}
|
|
2227
1958
|
}
|
|
2228
|
-
{
|
|
2229
1959
|
if(pattern_a.PVariable) {
|
|
2230
1960
|
return pattern_
|
|
2231
|
-
return
|
|
2232
|
-
}
|
|
2233
1961
|
}
|
|
2234
|
-
{
|
|
2235
1962
|
if(pattern_a.PVariant) {
|
|
2236
1963
|
const at_ = pattern_a.at_;
|
|
2237
1964
|
const name_ = pattern_a.name_;
|
|
@@ -2243,10 +1970,7 @@ const newPatterns_ = ff_core_List.List_map(patterns_, ((_w1) => {
|
|
|
2243
1970
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
2244
1971
|
}));
|
|
2245
1972
|
return ff_compiler_Syntax.PVariant(at_, newName_, newPatterns_)
|
|
2246
|
-
return
|
|
2247
|
-
}
|
|
2248
1973
|
}
|
|
2249
|
-
{
|
|
2250
1974
|
if(pattern_a.PVariantAs) {
|
|
2251
1975
|
const at_ = pattern_a.at_;
|
|
2252
1976
|
const name_ = pattern_a.name_;
|
|
@@ -2256,33 +1980,22 @@ const newName_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_,
|
|
|
2256
1980
|
return name_
|
|
2257
1981
|
}));
|
|
2258
1982
|
return ff_compiler_Syntax.PVariantAs(at_, newName_, variableAt_, variable_)
|
|
2259
|
-
return
|
|
2260
|
-
}
|
|
2261
1983
|
}
|
|
2262
|
-
{
|
|
2263
1984
|
if(pattern_a.PAlias) {
|
|
2264
1985
|
const at_ = pattern_a.at_;
|
|
2265
1986
|
const pattern_ = pattern_a.pattern_;
|
|
2266
1987
|
const variable_ = pattern_a.variable_;
|
|
2267
1988
|
const newPattern_ = ff_compiler_Resolver.Resolver_resolvePattern(self_, pattern_);
|
|
2268
1989
|
return ff_compiler_Syntax.PAlias(at_, newPattern_, variable_)
|
|
2269
|
-
return
|
|
2270
|
-
}
|
|
2271
|
-
}
|
|
2272
1990
|
}
|
|
2273
1991
|
}
|
|
2274
1992
|
|
|
2275
1993
|
export async function Resolver_containsAsyncType$(self_, type_, $task) {
|
|
2276
|
-
{
|
|
2277
1994
|
const self_a = self_;
|
|
2278
1995
|
const type_a = type_;
|
|
2279
|
-
{
|
|
2280
1996
|
if(type_a.TVariable) {
|
|
2281
1997
|
return false
|
|
2282
|
-
return
|
|
2283
|
-
}
|
|
2284
1998
|
}
|
|
2285
|
-
{
|
|
2286
1999
|
if(type_a.TConstructor) {
|
|
2287
2000
|
const constructor_ = type_a;
|
|
2288
2001
|
const name_ = (ff_core_String.String_contains(constructor_.name_, "$")
|
|
@@ -2301,9 +2014,170 @@ return ff_compiler_Resolver.Resolver_containsAsyncType(self_, _w1)
|
|
|
2301
2014
|
return
|
|
2302
2015
|
}
|
|
2303
2016
|
}
|
|
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_)) + ")")
|
|
2304
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_)) + ")")
|
|
2305
2040
|
}
|
|
2041
|
+
}
|
|
2042
|
+
};
|
|
2306
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
|
+
};
|
|
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
|
+
};
|
|
2307
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
|
+
};
|
|
2308
2182
|
|
|
2309
2183
|
|