firefly-compiler 0.4.19 → 0.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/Builder.ff +23 -13
- package/compiler/JsEmitter.ff +120 -76
- package/compiler/LspHook.ff +17 -3
- package/compiler/Main.ff +13 -7
- package/compiler/Parser.ff +11 -13
- package/compiler/Resolver.ff +15 -15
- package/compiler/Syntax.ff +1 -0
- package/core/Array.ff +6 -4
- package/core/Int.ff +12 -12
- package/core/Json.ff +2 -2
- package/core/List.ff +6 -4
- 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/CompletionHandler.ff +14 -14
- package/lsp/Handler.ff +56 -60
- package/lsp/SignatureHelpHandler.ff +5 -4
- package/lsp/SymbolHandler.ff +18 -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 +8 -222
- package/output/js/ff/compiler/Environment.mjs +12 -154
- package/output/js/ff/compiler/Inference.mjs +127 -1013
- package/output/js/ff/compiler/JsEmitter.mjs +434 -2344
- package/output/js/ff/compiler/JsImporter.mjs +0 -12
- package/output/js/ff/compiler/LspHook.mjs +548 -151
- package/output/js/ff/compiler/Main.mjs +96 -550
- package/output/js/ff/compiler/Parser.mjs +58 -390
- package/output/js/ff/compiler/Patterns.mjs +20 -200
- package/output/js/ff/compiler/Resolver.mjs +26 -340
- package/output/js/ff/compiler/Substitution.mjs +2 -160
- 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 +26 -360
- 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 +2 -42
- 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 +0 -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/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/client/src/extension.ts +30 -2
- package/vscode/package.json +17 -1
- package/core/Stack.ff +0 -250
|
@@ -156,7 +156,6 @@ return module2_
|
|
|
156
156
|
export function Resolver_checkInstanceType(self_, type_) {
|
|
157
157
|
{
|
|
158
158
|
const _1 = type_;
|
|
159
|
-
{
|
|
160
159
|
if(_1.TConstructor) {
|
|
161
160
|
const name_ = _1.name_;
|
|
162
161
|
const typeArguments_ = _1.generics_;
|
|
@@ -168,7 +167,6 @@ ff_compiler_Resolver.Resolver_checkInstanceType(self_, _w1)
|
|
|
168
167
|
}))
|
|
169
168
|
return
|
|
170
169
|
}
|
|
171
|
-
}
|
|
172
170
|
{
|
|
173
171
|
|
|
174
172
|
return
|
|
@@ -183,18 +181,13 @@ ff_core_List.List_each(imports_, ((import_) => {
|
|
|
183
181
|
const _1 = ff_core_List.List_find(modules_, ((_w1) => {
|
|
184
182
|
return (ff_core_String.String_dropLast(_w1.file_, 3) === import_.file_)
|
|
185
183
|
}));
|
|
186
|
-
{
|
|
187
184
|
if(_1.Some) {
|
|
188
185
|
const module_ = _1.value_;
|
|
189
186
|
resolver_ = ff_compiler_Resolver.Resolver_processDefinitions(resolver_, module_, ff_core_Option.Some(import_.alias_))
|
|
190
187
|
return
|
|
191
188
|
}
|
|
192
|
-
}
|
|
193
|
-
{
|
|
194
189
|
if(_1.None) {
|
|
195
190
|
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
191
|
}
|
|
199
192
|
}
|
|
200
193
|
}));
|
|
@@ -206,28 +199,18 @@ function entry_(name_, unqualified_) {
|
|
|
206
199
|
const full_ = ((((ff_compiler_Syntax.PackagePair_groupName(module_.packagePair_, ":") + "/") + ff_core_String.String_dropLast(module_.file_, 3)) + ".") + name_);
|
|
207
200
|
{
|
|
208
201
|
const _1 = importAlias_;
|
|
209
|
-
{
|
|
210
202
|
if(_1.None) {
|
|
211
203
|
return [ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
212
|
-
return
|
|
213
|
-
}
|
|
214
204
|
}
|
|
215
|
-
{
|
|
216
205
|
if(_1.Some) {
|
|
217
206
|
const alias_ = _1.value_;
|
|
218
|
-
|
|
219
|
-
if(_guard1) {
|
|
207
|
+
if(unqualified_) {
|
|
220
208
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
221
|
-
return
|
|
222
|
-
}
|
|
223
209
|
}
|
|
224
210
|
}
|
|
225
|
-
{
|
|
226
211
|
if(_1.Some) {
|
|
227
212
|
const alias_ = _1.value_;
|
|
228
213
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(full_, full_)]
|
|
229
|
-
return
|
|
230
|
-
}
|
|
231
214
|
}
|
|
232
215
|
}
|
|
233
216
|
}
|
|
@@ -310,14 +293,13 @@ const _1 = self_;
|
|
|
310
293
|
{
|
|
311
294
|
const _c = _1;
|
|
312
295
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variables_, lets_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functions_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethods_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variableLocations_, letLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functionLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethodLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variants_, variants_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.types_, types_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeGenerics_, typeGenerics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeLocations_, typeLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.asyncTypes_, asyncTypes_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traits_, traits_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traitLocations_, traitLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), self_.state_, _c.lspHook_)
|
|
313
|
-
return
|
|
314
296
|
}
|
|
315
297
|
}
|
|
316
298
|
}
|
|
317
299
|
|
|
318
300
|
export function Resolver_resolveTypeDefinition(self_, definition_) {
|
|
319
301
|
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()))
|
|
302
|
+
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
303
|
};
|
|
322
304
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
323
305
|
return ff_core_Pair.Pair(g_, g_)
|
|
@@ -359,7 +341,7 @@ return
|
|
|
359
341
|
}
|
|
360
342
|
})), ff_core_List.List_map(definition_.variants_, ((v_) => {
|
|
361
343
|
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()))
|
|
344
|
+
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
345
|
};
|
|
364
346
|
{
|
|
365
347
|
const _1 = v_;
|
|
@@ -392,7 +374,7 @@ return
|
|
|
392
374
|
|
|
393
375
|
export function Resolver_resolveTraitDefinition(self_, definition_) {
|
|
394
376
|
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()))
|
|
377
|
+
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
378
|
};
|
|
397
379
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
398
380
|
return ff_core_Pair.Pair(g_, g_)
|
|
@@ -418,16 +400,12 @@ return (_w1.name_ === name_)
|
|
|
418
400
|
const function1_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(lambda_));
|
|
419
401
|
const function2_ = ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, function1_, true, false);
|
|
420
402
|
return ff_core_Pair.Pair(name_, (((_1) => {
|
|
421
|
-
{
|
|
422
403
|
if(_1.FireflyTarget) {
|
|
423
404
|
const lambda_ = _1.lambda_;
|
|
424
405
|
return lambda_
|
|
425
|
-
return
|
|
426
|
-
}
|
|
427
406
|
}
|
|
428
407
|
{
|
|
429
408
|
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
409
|
}
|
|
432
410
|
}))(function2_.body_))
|
|
433
411
|
return
|
|
@@ -443,7 +421,7 @@ const traitDefinedAt_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.tra
|
|
|
443
421
|
return definition_.at_
|
|
444
422
|
}));
|
|
445
423
|
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()))
|
|
424
|
+
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
425
|
};
|
|
448
426
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
449
427
|
return ff_core_Pair.Pair(g_, g_)
|
|
@@ -496,48 +474,33 @@ return
|
|
|
496
474
|
|
|
497
475
|
export function Resolver_resolveLetDefinition(self_, definition_, topLevel_) {
|
|
498
476
|
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()))
|
|
477
|
+
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
478
|
};
|
|
501
479
|
{
|
|
502
480
|
const _1 = definition_;
|
|
503
481
|
{
|
|
504
482
|
const _c = _1;
|
|
505
483
|
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true))
|
|
506
|
-
return
|
|
507
484
|
}
|
|
508
485
|
}
|
|
509
486
|
}
|
|
510
487
|
|
|
511
488
|
export function Resolver_resolveTerm(self_, term_, topLevel_) {
|
|
512
|
-
{
|
|
513
489
|
const self_a = self_;
|
|
514
490
|
const term_a = term_;
|
|
515
491
|
const topLevel_a = topLevel_;
|
|
516
|
-
{
|
|
517
492
|
if(term_a.EString) {
|
|
518
493
|
return term_
|
|
519
|
-
return
|
|
520
494
|
}
|
|
521
|
-
}
|
|
522
|
-
{
|
|
523
495
|
if(term_a.EChar) {
|
|
524
496
|
return term_
|
|
525
|
-
return
|
|
526
497
|
}
|
|
527
|
-
}
|
|
528
|
-
{
|
|
529
498
|
if(term_a.EInt) {
|
|
530
499
|
return term_
|
|
531
|
-
return
|
|
532
|
-
}
|
|
533
500
|
}
|
|
534
|
-
{
|
|
535
501
|
if(term_a.EFloat) {
|
|
536
502
|
return term_
|
|
537
|
-
return
|
|
538
|
-
}
|
|
539
503
|
}
|
|
540
|
-
{
|
|
541
504
|
if(term_a.EVariable) {
|
|
542
505
|
const e_ = term_a;
|
|
543
506
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
@@ -545,7 +508,7 @@ const at_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variableLocatio
|
|
|
545
508
|
return e_.at_
|
|
546
509
|
}));
|
|
547
510
|
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()))
|
|
511
|
+
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
512
|
}
|
|
550
513
|
};
|
|
551
514
|
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) => {
|
|
@@ -554,7 +517,6 @@ const _1 = e_;
|
|
|
554
517
|
{
|
|
555
518
|
const _c = _1;
|
|
556
519
|
return ff_compiler_Syntax.EVariable(_c.at_, _w1)
|
|
557
|
-
return
|
|
558
520
|
}
|
|
559
521
|
}
|
|
560
522
|
})), (() => {
|
|
@@ -562,8 +524,6 @@ return term_
|
|
|
562
524
|
}))
|
|
563
525
|
return
|
|
564
526
|
}
|
|
565
|
-
}
|
|
566
|
-
{
|
|
567
527
|
if(term_a.EList) {
|
|
568
528
|
const at_ = term_a.at_;
|
|
569
529
|
const t_ = term_a.elementType_;
|
|
@@ -573,13 +533,10 @@ return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(s
|
|
|
573
533
|
const item_ = _1.first_;
|
|
574
534
|
const spread_ = _1.second_;
|
|
575
535
|
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
576
|
-
return
|
|
577
536
|
}
|
|
578
537
|
})))
|
|
579
538
|
return
|
|
580
539
|
}
|
|
581
|
-
}
|
|
582
|
-
{
|
|
583
540
|
if(term_a.EVariant) {
|
|
584
541
|
const at_ = term_a.at_;
|
|
585
542
|
const name_ = term_a.name_;
|
|
@@ -596,15 +553,12 @@ const _1 = a_;
|
|
|
596
553
|
{
|
|
597
554
|
const _c = _1;
|
|
598
555
|
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
599
|
-
return
|
|
600
556
|
}
|
|
601
557
|
}
|
|
602
558
|
}))
|
|
603
559
|
})))
|
|
604
560
|
return
|
|
605
561
|
}
|
|
606
|
-
}
|
|
607
|
-
{
|
|
608
562
|
if(term_a.EVariantIs) {
|
|
609
563
|
const at_ = term_a.at_;
|
|
610
564
|
const name_ = term_a.name_;
|
|
@@ -616,8 +570,6 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
616
570
|
})))
|
|
617
571
|
return
|
|
618
572
|
}
|
|
619
|
-
}
|
|
620
|
-
{
|
|
621
573
|
if(term_a.ECopy) {
|
|
622
574
|
const at_ = term_a.at_;
|
|
623
575
|
const name_ = term_a.name_;
|
|
@@ -631,14 +583,11 @@ const _1 = f_;
|
|
|
631
583
|
{
|
|
632
584
|
const _c = _1;
|
|
633
585
|
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
634
|
-
return
|
|
635
586
|
}
|
|
636
587
|
}
|
|
637
588
|
})))
|
|
638
589
|
return
|
|
639
590
|
}
|
|
640
|
-
}
|
|
641
|
-
{
|
|
642
591
|
if(term_a.EField) {
|
|
643
592
|
const e_ = term_a;
|
|
644
593
|
{
|
|
@@ -646,13 +595,10 @@ const _1 = e_;
|
|
|
646
595
|
{
|
|
647
596
|
const _c = _1;
|
|
648
597
|
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
649
|
-
return
|
|
650
598
|
}
|
|
651
599
|
}
|
|
652
600
|
return
|
|
653
601
|
}
|
|
654
|
-
}
|
|
655
|
-
{
|
|
656
602
|
if(term_a.ELambda) {
|
|
657
603
|
const at_ = term_a.at_;
|
|
658
604
|
const lambdaAt_ = term_a.lambda_.at_;
|
|
@@ -663,21 +609,15 @@ return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
|
663
609
|
}))))
|
|
664
610
|
return
|
|
665
611
|
}
|
|
666
|
-
}
|
|
667
|
-
{
|
|
668
612
|
if(term_a.EPipe) {
|
|
669
613
|
const at_ = term_a.at_;
|
|
670
614
|
const value_ = term_a.value_;
|
|
671
615
|
const effect_ = term_a.effect_;
|
|
672
616
|
const function_ = term_a.function_;
|
|
673
617
|
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_))
|
|
674
|
-
return
|
|
675
618
|
}
|
|
676
|
-
|
|
677
|
-
{
|
|
678
|
-
if(term_a.ECall) {
|
|
619
|
+
if(term_a.ECall && term_a.target_.DynamicCall) {
|
|
679
620
|
const at_ = term_a.at_;
|
|
680
|
-
if(term_a.target_.DynamicCall) {
|
|
681
621
|
const target_ = term_a.target_;
|
|
682
622
|
const effect_ = term_a.effect_;
|
|
683
623
|
const typeArguments_ = term_a.typeArguments_;
|
|
@@ -693,24 +633,14 @@ const _1 = a_;
|
|
|
693
633
|
{
|
|
694
634
|
const _c = _1;
|
|
695
635
|
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
696
|
-
return
|
|
697
636
|
}
|
|
698
637
|
}
|
|
699
638
|
})), dictionaries_)
|
|
700
639
|
return
|
|
701
640
|
}
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
{
|
|
705
|
-
if(term_a.ECall) {
|
|
706
|
-
const at_ = term_a.at_;
|
|
707
|
-
if(term_a.target_.StaticCall) {
|
|
641
|
+
if(term_a.ECall && term_a.target_.StaticCall) {
|
|
708
642
|
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
643
|
}
|
|
713
|
-
{
|
|
714
644
|
if(term_a.ERecord) {
|
|
715
645
|
const at_ = term_a.at_;
|
|
716
646
|
const fields_ = term_a.fields_;
|
|
@@ -720,14 +650,11 @@ const _1 = f_;
|
|
|
720
650
|
{
|
|
721
651
|
const _c = _1;
|
|
722
652
|
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
723
|
-
return
|
|
724
653
|
}
|
|
725
654
|
}
|
|
726
655
|
})))
|
|
727
656
|
return
|
|
728
657
|
}
|
|
729
|
-
}
|
|
730
|
-
{
|
|
731
658
|
if(term_a.EWildcard) {
|
|
732
659
|
const e_ = term_a;
|
|
733
660
|
if((e_.index_ === 0)) {
|
|
@@ -738,13 +665,10 @@ const _1 = e_;
|
|
|
738
665
|
{
|
|
739
666
|
const _c = _1;
|
|
740
667
|
return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
741
|
-
return
|
|
742
668
|
}
|
|
743
669
|
}
|
|
744
670
|
return
|
|
745
671
|
}
|
|
746
|
-
}
|
|
747
|
-
{
|
|
748
672
|
if(term_a.EFunctions) {
|
|
749
673
|
const at_ = term_a.at_;
|
|
750
674
|
const functions_ = term_a.functions_;
|
|
@@ -767,8 +691,6 @@ return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topL
|
|
|
767
691
|
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
768
692
|
return
|
|
769
693
|
}
|
|
770
|
-
}
|
|
771
|
-
{
|
|
772
694
|
if(term_a.ELet) {
|
|
773
695
|
const e_ = term_a;
|
|
774
696
|
const self2_ = (((_c) => {
|
|
@@ -776,7 +698,7 @@ return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, e_.na
|
|
|
776
698
|
}))(self_);
|
|
777
699
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
778
700
|
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()))
|
|
701
|
+
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
702
|
}
|
|
781
703
|
};
|
|
782
704
|
{
|
|
@@ -784,22 +706,16 @@ const _1 = e_;
|
|
|
784
706
|
{
|
|
785
707
|
const _c = _1;
|
|
786
708
|
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_))
|
|
787
|
-
return
|
|
788
709
|
}
|
|
789
710
|
}
|
|
790
711
|
return
|
|
791
712
|
}
|
|
792
|
-
}
|
|
793
|
-
{
|
|
794
713
|
if(term_a.ESequential) {
|
|
795
714
|
const at_ = term_a.at_;
|
|
796
715
|
const before_ = term_a.before_;
|
|
797
716
|
const after_ = term_a.after_;
|
|
798
717
|
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
799
|
-
return
|
|
800
|
-
}
|
|
801
718
|
}
|
|
802
|
-
{
|
|
803
719
|
if(term_a.EAssign) {
|
|
804
720
|
const at_ = term_a.at_;
|
|
805
721
|
const operator_ = term_a.operator_;
|
|
@@ -810,8 +726,6 @@ throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Sy
|
|
|
810
726
|
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
811
727
|
return
|
|
812
728
|
}
|
|
813
|
-
}
|
|
814
|
-
{
|
|
815
729
|
if(term_a.EAssignField) {
|
|
816
730
|
const at_ = term_a.at_;
|
|
817
731
|
const operator_ = term_a.operator_;
|
|
@@ -819,24 +733,16 @@ const record_ = term_a.record_;
|
|
|
819
733
|
const field_ = term_a.field_;
|
|
820
734
|
const value_ = term_a.value_;
|
|
821
735
|
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
822
|
-
return
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
736
|
}
|
|
826
737
|
}
|
|
827
738
|
|
|
828
739
|
export function Resolver_resolveType(self_, type_, topLevel_) {
|
|
829
|
-
{
|
|
830
740
|
const self_a = self_;
|
|
831
741
|
const type_a = type_;
|
|
832
742
|
const topLevel_a = topLevel_;
|
|
833
|
-
{
|
|
834
743
|
if(type_a.TVariable) {
|
|
835
744
|
return type_
|
|
836
|
-
return
|
|
837
|
-
}
|
|
838
745
|
}
|
|
839
|
-
{
|
|
840
746
|
if(type_a.TConstructor) {
|
|
841
747
|
const constructor_ = type_a;
|
|
842
748
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
@@ -871,7 +777,6 @@ const _1 = constructor_;
|
|
|
871
777
|
{
|
|
872
778
|
const _c = _1;
|
|
873
779
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...arguments_, returnType_])
|
|
874
|
-
return
|
|
875
780
|
}
|
|
876
781
|
}
|
|
877
782
|
} else {
|
|
@@ -880,15 +785,12 @@ const _1 = constructor_;
|
|
|
880
785
|
{
|
|
881
786
|
const _c = _1;
|
|
882
787
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...generics_])
|
|
883
|
-
return
|
|
884
788
|
}
|
|
885
789
|
}
|
|
886
790
|
}
|
|
887
791
|
return
|
|
888
792
|
}
|
|
889
793
|
}
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
794
|
|
|
893
795
|
export function Resolver_makeEffectArgument(self_, at_, topLevel_) {
|
|
894
796
|
if(topLevel_) {
|
|
@@ -944,7 +846,7 @@ return ff_compiler_Syntax.DFunction(definition_.at_, signature_, body_)
|
|
|
944
846
|
|
|
945
847
|
export function Resolver_resolveSignature(self_, signature_, topLevel_, isInstanceMethod_) {
|
|
946
848
|
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_))
|
|
849
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSignatureHook(signature_, isInstanceMethod_, topLevel_))
|
|
948
850
|
};
|
|
949
851
|
const newSignature_ = (topLevel_
|
|
950
852
|
? (((_c) => {
|
|
@@ -999,52 +901,30 @@ const _1 = self_;
|
|
|
999
901
|
{
|
|
1000
902
|
const _c = _1;
|
|
1001
903
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, variableMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, variableLocationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, ff_core_Map.Map_addAll(self_.types_, typeMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1002
|
-
return
|
|
1003
904
|
}
|
|
1004
905
|
}
|
|
1005
906
|
}
|
|
1006
907
|
|
|
1007
908
|
export function Resolver_resolveCase(self_, case_, topLevel_) {
|
|
1008
909
|
function findVariables_(pattern_) {
|
|
1009
|
-
{
|
|
1010
910
|
const pattern_a = pattern_;
|
|
1011
|
-
{
|
|
1012
911
|
if(pattern_a.PString) {
|
|
1013
912
|
return ff_core_Map.empty_()
|
|
1014
|
-
return
|
|
1015
|
-
}
|
|
1016
913
|
}
|
|
1017
|
-
{
|
|
1018
914
|
if(pattern_a.PInt) {
|
|
1019
915
|
return ff_core_Map.empty_()
|
|
1020
|
-
return
|
|
1021
916
|
}
|
|
1022
|
-
}
|
|
1023
|
-
{
|
|
1024
917
|
if(pattern_a.PChar) {
|
|
1025
918
|
return ff_core_Map.empty_()
|
|
1026
|
-
return
|
|
1027
919
|
}
|
|
1028
|
-
|
|
1029
|
-
{
|
|
1030
|
-
if(pattern_a.PVariable) {
|
|
920
|
+
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
1031
921
|
const at_ = pattern_a.at_;
|
|
1032
|
-
if(pattern_a.name_.Some) {
|
|
1033
922
|
const name_ = pattern_a.name_.value_;
|
|
1034
923
|
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_, ff_core_Pair.Pair(at_, name_))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1035
|
-
return
|
|
1036
|
-
}
|
|
1037
924
|
}
|
|
1038
|
-
|
|
1039
|
-
{
|
|
1040
|
-
if(pattern_a.PVariable) {
|
|
1041
|
-
if(pattern_a.name_.None) {
|
|
925
|
+
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
1042
926
|
return ff_core_Map.empty_()
|
|
1043
|
-
return
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
927
|
}
|
|
1047
|
-
{
|
|
1048
928
|
if(pattern_a.PVariant) {
|
|
1049
929
|
const patterns_ = pattern_a.patterns_;
|
|
1050
930
|
return ff_core_List.List_foldLeft(ff_core_List.List_map(patterns_, ((pattern_) => {
|
|
@@ -1054,8 +934,6 @@ return ff_core_Map.Map_addAll(_w1, _w2, ff_core_Ordering.ff_core_Ordering_Order$
|
|
|
1054
934
|
}))
|
|
1055
935
|
return
|
|
1056
936
|
}
|
|
1057
|
-
}
|
|
1058
|
-
{
|
|
1059
937
|
if(pattern_a.PVariantAs) {
|
|
1060
938
|
const at_ = pattern_a.at_;
|
|
1061
939
|
const variableAt_ = pattern_a.variableAt_;
|
|
@@ -1065,16 +943,11 @@ return ff_core_Pair.Pair(x_, ff_core_Pair.Pair(variableAt_, x_))
|
|
|
1065
943
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1066
944
|
return
|
|
1067
945
|
}
|
|
1068
|
-
}
|
|
1069
|
-
{
|
|
1070
946
|
if(pattern_a.PAlias) {
|
|
1071
947
|
const at_ = pattern_a.at_;
|
|
1072
948
|
const pattern_ = pattern_a.pattern_;
|
|
1073
949
|
const variable_ = pattern_a.variable_;
|
|
1074
950
|
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_, ff_core_Pair.Pair(at_, variable_))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), findVariables_(pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1075
|
-
return
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
1078
951
|
}
|
|
1079
952
|
}
|
|
1080
953
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -1110,34 +983,20 @@ return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
|
1110
983
|
}
|
|
1111
984
|
|
|
1112
985
|
export function Resolver_resolvePattern(self_, pattern_) {
|
|
1113
|
-
{
|
|
1114
986
|
const self_a = self_;
|
|
1115
987
|
const pattern_a = pattern_;
|
|
1116
|
-
{
|
|
1117
988
|
if(pattern_a.PString) {
|
|
1118
989
|
return pattern_
|
|
1119
|
-
return
|
|
1120
|
-
}
|
|
1121
990
|
}
|
|
1122
|
-
{
|
|
1123
991
|
if(pattern_a.PInt) {
|
|
1124
992
|
return pattern_
|
|
1125
|
-
return
|
|
1126
|
-
}
|
|
1127
993
|
}
|
|
1128
|
-
{
|
|
1129
994
|
if(pattern_a.PChar) {
|
|
1130
995
|
return pattern_
|
|
1131
|
-
return
|
|
1132
996
|
}
|
|
1133
|
-
}
|
|
1134
|
-
{
|
|
1135
997
|
if(pattern_a.PVariable) {
|
|
1136
998
|
return pattern_
|
|
1137
|
-
return
|
|
1138
|
-
}
|
|
1139
999
|
}
|
|
1140
|
-
{
|
|
1141
1000
|
if(pattern_a.PVariant) {
|
|
1142
1001
|
const at_ = pattern_a.at_;
|
|
1143
1002
|
const name_ = pattern_a.name_;
|
|
@@ -1149,10 +1008,7 @@ const newPatterns_ = ff_core_List.List_map(patterns_, ((_w1) => {
|
|
|
1149
1008
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
1150
1009
|
}));
|
|
1151
1010
|
return ff_compiler_Syntax.PVariant(at_, newName_, newPatterns_)
|
|
1152
|
-
return
|
|
1153
|
-
}
|
|
1154
1011
|
}
|
|
1155
|
-
{
|
|
1156
1012
|
if(pattern_a.PVariantAs) {
|
|
1157
1013
|
const at_ = pattern_a.at_;
|
|
1158
1014
|
const name_ = pattern_a.name_;
|
|
@@ -1162,33 +1018,22 @@ const newName_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_,
|
|
|
1162
1018
|
return name_
|
|
1163
1019
|
}));
|
|
1164
1020
|
return ff_compiler_Syntax.PVariantAs(at_, newName_, variableAt_, variable_)
|
|
1165
|
-
return
|
|
1166
|
-
}
|
|
1167
1021
|
}
|
|
1168
|
-
{
|
|
1169
1022
|
if(pattern_a.PAlias) {
|
|
1170
1023
|
const at_ = pattern_a.at_;
|
|
1171
1024
|
const pattern_ = pattern_a.pattern_;
|
|
1172
1025
|
const variable_ = pattern_a.variable_;
|
|
1173
1026
|
const newPattern_ = ff_compiler_Resolver.Resolver_resolvePattern(self_, pattern_);
|
|
1174
1027
|
return ff_compiler_Syntax.PAlias(at_, newPattern_, variable_)
|
|
1175
|
-
return
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
1028
|
}
|
|
1179
1029
|
}
|
|
1180
1030
|
|
|
1181
1031
|
export function Resolver_containsAsyncType(self_, type_) {
|
|
1182
|
-
{
|
|
1183
1032
|
const self_a = self_;
|
|
1184
1033
|
const type_a = type_;
|
|
1185
|
-
{
|
|
1186
1034
|
if(type_a.TVariable) {
|
|
1187
1035
|
return false
|
|
1188
|
-
return
|
|
1189
1036
|
}
|
|
1190
|
-
}
|
|
1191
|
-
{
|
|
1192
1037
|
if(type_a.TConstructor) {
|
|
1193
1038
|
const constructor_ = type_a;
|
|
1194
1039
|
const name_ = (ff_core_String.String_contains(constructor_.name_, "$")
|
|
@@ -1207,8 +1052,6 @@ return ff_compiler_Resolver.Resolver_containsAsyncType(self_, _w1)
|
|
|
1207
1052
|
return
|
|
1208
1053
|
}
|
|
1209
1054
|
}
|
|
1210
|
-
}
|
|
1211
|
-
}
|
|
1212
1055
|
|
|
1213
1056
|
export async function Resolver_freshUnificationVariable$(self_, at_, $task) {
|
|
1214
1057
|
const result_ = ff_compiler_Syntax.TVariable(at_, self_.state_.nextUnificationVariableIndex_);
|
|
@@ -1250,7 +1093,6 @@ return module2_
|
|
|
1250
1093
|
export async function Resolver_checkInstanceType$(self_, type_, $task) {
|
|
1251
1094
|
{
|
|
1252
1095
|
const _1 = type_;
|
|
1253
|
-
{
|
|
1254
1096
|
if(_1.TConstructor) {
|
|
1255
1097
|
const name_ = _1.name_;
|
|
1256
1098
|
const typeArguments_ = _1.generics_;
|
|
@@ -1262,7 +1104,6 @@ ff_compiler_Resolver.Resolver_checkInstanceType(self_, _w1)
|
|
|
1262
1104
|
}))
|
|
1263
1105
|
return
|
|
1264
1106
|
}
|
|
1265
|
-
}
|
|
1266
1107
|
{
|
|
1267
1108
|
|
|
1268
1109
|
return
|
|
@@ -1277,18 +1118,13 @@ ff_core_List.List_each(imports_, ((import_) => {
|
|
|
1277
1118
|
const _1 = ff_core_List.List_find(modules_, ((_w1) => {
|
|
1278
1119
|
return (ff_core_String.String_dropLast(_w1.file_, 3) === import_.file_)
|
|
1279
1120
|
}));
|
|
1280
|
-
{
|
|
1281
1121
|
if(_1.Some) {
|
|
1282
1122
|
const module_ = _1.value_;
|
|
1283
1123
|
resolver_ = ff_compiler_Resolver.Resolver_processDefinitions(resolver_, module_, ff_core_Option.Some(import_.alias_))
|
|
1284
1124
|
return
|
|
1285
1125
|
}
|
|
1286
|
-
}
|
|
1287
|
-
{
|
|
1288
1126
|
if(_1.None) {
|
|
1289
1127
|
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
1128
|
}
|
|
1293
1129
|
}
|
|
1294
1130
|
}));
|
|
@@ -1300,28 +1136,18 @@ function entry_(name_, unqualified_) {
|
|
|
1300
1136
|
const full_ = ((((ff_compiler_Syntax.PackagePair_groupName(module_.packagePair_, ":") + "/") + ff_core_String.String_dropLast(module_.file_, 3)) + ".") + name_);
|
|
1301
1137
|
{
|
|
1302
1138
|
const _1 = importAlias_;
|
|
1303
|
-
{
|
|
1304
1139
|
if(_1.None) {
|
|
1305
1140
|
return [ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
1306
|
-
return
|
|
1307
|
-
}
|
|
1308
1141
|
}
|
|
1309
|
-
{
|
|
1310
1142
|
if(_1.Some) {
|
|
1311
1143
|
const alias_ = _1.value_;
|
|
1312
|
-
|
|
1313
|
-
if(_guard1) {
|
|
1144
|
+
if(unqualified_) {
|
|
1314
1145
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(name_, full_), ff_core_Pair.Pair(full_, full_)]
|
|
1315
|
-
return
|
|
1316
|
-
}
|
|
1317
1146
|
}
|
|
1318
1147
|
}
|
|
1319
|
-
{
|
|
1320
1148
|
if(_1.Some) {
|
|
1321
1149
|
const alias_ = _1.value_;
|
|
1322
1150
|
return [ff_core_Pair.Pair(((alias_ + ".") + name_), full_), ff_core_Pair.Pair(full_, full_)]
|
|
1323
|
-
return
|
|
1324
|
-
}
|
|
1325
1151
|
}
|
|
1326
1152
|
}
|
|
1327
1153
|
}
|
|
@@ -1404,14 +1230,13 @@ const _1 = self_;
|
|
|
1404
1230
|
{
|
|
1405
1231
|
const _c = _1;
|
|
1406
1232
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variables_, lets_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functions_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethods_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(ff_core_Map.Map_addAll(self_.variableLocations_, letLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), functionLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), traitMethodLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variants_, variants_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.types_, types_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeGenerics_, typeGenerics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.typeLocations_, typeLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.asyncTypes_, asyncTypes_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_List.List_toSet([], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traits_, traits_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.traitLocations_, traitLocations_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), self_.state_, _c.lspHook_)
|
|
1407
|
-
return
|
|
1408
1233
|
}
|
|
1409
1234
|
}
|
|
1410
1235
|
}
|
|
1411
1236
|
|
|
1412
1237
|
export async function Resolver_resolveTypeDefinition$(self_, definition_, $task) {
|
|
1413
1238
|
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()))
|
|
1239
|
+
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
1240
|
};
|
|
1416
1241
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
1417
1242
|
return ff_core_Pair.Pair(g_, g_)
|
|
@@ -1453,7 +1278,7 @@ return
|
|
|
1453
1278
|
}
|
|
1454
1279
|
})), ff_core_List.List_map(definition_.variants_, ((v_) => {
|
|
1455
1280
|
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()))
|
|
1281
|
+
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
1282
|
};
|
|
1458
1283
|
{
|
|
1459
1284
|
const _1 = v_;
|
|
@@ -1486,7 +1311,7 @@ return
|
|
|
1486
1311
|
|
|
1487
1312
|
export async function Resolver_resolveTraitDefinition$(self_, definition_, $task) {
|
|
1488
1313
|
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()))
|
|
1314
|
+
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
1315
|
};
|
|
1491
1316
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
1492
1317
|
return ff_core_Pair.Pair(g_, g_)
|
|
@@ -1512,16 +1337,12 @@ return (_w1.name_ === name_)
|
|
|
1512
1337
|
const function1_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(lambda_));
|
|
1513
1338
|
const function2_ = ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, function1_, true, false);
|
|
1514
1339
|
return ff_core_Pair.Pair(name_, (((_1) => {
|
|
1515
|
-
{
|
|
1516
1340
|
if(_1.FireflyTarget) {
|
|
1517
1341
|
const lambda_ = _1.lambda_;
|
|
1518
1342
|
return lambda_
|
|
1519
|
-
return
|
|
1520
|
-
}
|
|
1521
1343
|
}
|
|
1522
1344
|
{
|
|
1523
1345
|
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
1346
|
}
|
|
1526
1347
|
}))(function2_.body_))
|
|
1527
1348
|
return
|
|
@@ -1537,7 +1358,7 @@ const traitDefinedAt_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.tra
|
|
|
1537
1358
|
return definition_.at_
|
|
1538
1359
|
}));
|
|
1539
1360
|
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()))
|
|
1361
|
+
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
1362
|
};
|
|
1542
1363
|
const generics_ = ff_core_List.List_toMap(ff_core_List.List_map(definition_.generics_, ((g_) => {
|
|
1543
1364
|
return ff_core_Pair.Pair(g_, g_)
|
|
@@ -1590,48 +1411,33 @@ return
|
|
|
1590
1411
|
|
|
1591
1412
|
export async function Resolver_resolveLetDefinition$(self_, definition_, topLevel_, $task) {
|
|
1592
1413
|
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()))
|
|
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(), topLevel_))
|
|
1594
1415
|
};
|
|
1595
1416
|
{
|
|
1596
1417
|
const _1 = definition_;
|
|
1597
1418
|
{
|
|
1598
1419
|
const _c = _1;
|
|
1599
1420
|
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true))
|
|
1600
|
-
return
|
|
1601
1421
|
}
|
|
1602
1422
|
}
|
|
1603
1423
|
}
|
|
1604
1424
|
|
|
1605
1425
|
export async function Resolver_resolveTerm$(self_, term_, topLevel_, $task) {
|
|
1606
|
-
{
|
|
1607
1426
|
const self_a = self_;
|
|
1608
1427
|
const term_a = term_;
|
|
1609
1428
|
const topLevel_a = topLevel_;
|
|
1610
|
-
{
|
|
1611
1429
|
if(term_a.EString) {
|
|
1612
1430
|
return term_
|
|
1613
|
-
return
|
|
1614
1431
|
}
|
|
1615
|
-
}
|
|
1616
|
-
{
|
|
1617
1432
|
if(term_a.EChar) {
|
|
1618
1433
|
return term_
|
|
1619
|
-
return
|
|
1620
1434
|
}
|
|
1621
|
-
}
|
|
1622
|
-
{
|
|
1623
1435
|
if(term_a.EInt) {
|
|
1624
1436
|
return term_
|
|
1625
|
-
return
|
|
1626
|
-
}
|
|
1627
1437
|
}
|
|
1628
|
-
{
|
|
1629
1438
|
if(term_a.EFloat) {
|
|
1630
1439
|
return term_
|
|
1631
|
-
return
|
|
1632
|
-
}
|
|
1633
1440
|
}
|
|
1634
|
-
{
|
|
1635
1441
|
if(term_a.EVariable) {
|
|
1636
1442
|
const e_ = term_a;
|
|
1637
1443
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
@@ -1639,7 +1445,7 @@ const at_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variableLocatio
|
|
|
1639
1445
|
return e_.at_
|
|
1640
1446
|
}));
|
|
1641
1447
|
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()))
|
|
1448
|
+
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
1449
|
}
|
|
1644
1450
|
};
|
|
1645
1451
|
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) => {
|
|
@@ -1648,7 +1454,6 @@ const _1 = e_;
|
|
|
1648
1454
|
{
|
|
1649
1455
|
const _c = _1;
|
|
1650
1456
|
return ff_compiler_Syntax.EVariable(_c.at_, _w1)
|
|
1651
|
-
return
|
|
1652
1457
|
}
|
|
1653
1458
|
}
|
|
1654
1459
|
})), (() => {
|
|
@@ -1656,8 +1461,6 @@ return term_
|
|
|
1656
1461
|
}))
|
|
1657
1462
|
return
|
|
1658
1463
|
}
|
|
1659
|
-
}
|
|
1660
|
-
{
|
|
1661
1464
|
if(term_a.EList) {
|
|
1662
1465
|
const at_ = term_a.at_;
|
|
1663
1466
|
const t_ = term_a.elementType_;
|
|
@@ -1667,13 +1470,10 @@ return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(s
|
|
|
1667
1470
|
const item_ = _1.first_;
|
|
1668
1471
|
const spread_ = _1.second_;
|
|
1669
1472
|
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
1670
|
-
return
|
|
1671
1473
|
}
|
|
1672
1474
|
})))
|
|
1673
1475
|
return
|
|
1674
1476
|
}
|
|
1675
|
-
}
|
|
1676
|
-
{
|
|
1677
1477
|
if(term_a.EVariant) {
|
|
1678
1478
|
const at_ = term_a.at_;
|
|
1679
1479
|
const name_ = term_a.name_;
|
|
@@ -1690,15 +1490,12 @@ const _1 = a_;
|
|
|
1690
1490
|
{
|
|
1691
1491
|
const _c = _1;
|
|
1692
1492
|
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1693
|
-
return
|
|
1694
1493
|
}
|
|
1695
1494
|
}
|
|
1696
1495
|
}))
|
|
1697
1496
|
})))
|
|
1698
1497
|
return
|
|
1699
1498
|
}
|
|
1700
|
-
}
|
|
1701
|
-
{
|
|
1702
1499
|
if(term_a.EVariantIs) {
|
|
1703
1500
|
const at_ = term_a.at_;
|
|
1704
1501
|
const name_ = term_a.name_;
|
|
@@ -1710,8 +1507,6 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1710
1507
|
})))
|
|
1711
1508
|
return
|
|
1712
1509
|
}
|
|
1713
|
-
}
|
|
1714
|
-
{
|
|
1715
1510
|
if(term_a.ECopy) {
|
|
1716
1511
|
const at_ = term_a.at_;
|
|
1717
1512
|
const name_ = term_a.name_;
|
|
@@ -1725,14 +1520,11 @@ const _1 = f_;
|
|
|
1725
1520
|
{
|
|
1726
1521
|
const _c = _1;
|
|
1727
1522
|
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1728
|
-
return
|
|
1729
1523
|
}
|
|
1730
1524
|
}
|
|
1731
1525
|
})))
|
|
1732
1526
|
return
|
|
1733
1527
|
}
|
|
1734
|
-
}
|
|
1735
|
-
{
|
|
1736
1528
|
if(term_a.EField) {
|
|
1737
1529
|
const e_ = term_a;
|
|
1738
1530
|
{
|
|
@@ -1740,13 +1532,10 @@ const _1 = e_;
|
|
|
1740
1532
|
{
|
|
1741
1533
|
const _c = _1;
|
|
1742
1534
|
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
1743
|
-
return
|
|
1744
1535
|
}
|
|
1745
1536
|
}
|
|
1746
1537
|
return
|
|
1747
1538
|
}
|
|
1748
|
-
}
|
|
1749
|
-
{
|
|
1750
1539
|
if(term_a.ELambda) {
|
|
1751
1540
|
const at_ = term_a.at_;
|
|
1752
1541
|
const lambdaAt_ = term_a.lambda_.at_;
|
|
@@ -1757,21 +1546,15 @@ return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
|
1757
1546
|
}))))
|
|
1758
1547
|
return
|
|
1759
1548
|
}
|
|
1760
|
-
}
|
|
1761
|
-
{
|
|
1762
1549
|
if(term_a.EPipe) {
|
|
1763
1550
|
const at_ = term_a.at_;
|
|
1764
1551
|
const value_ = term_a.value_;
|
|
1765
1552
|
const effect_ = term_a.effect_;
|
|
1766
1553
|
const function_ = term_a.function_;
|
|
1767
1554
|
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_))
|
|
1768
|
-
return
|
|
1769
1555
|
}
|
|
1770
|
-
|
|
1771
|
-
{
|
|
1772
|
-
if(term_a.ECall) {
|
|
1556
|
+
if(term_a.ECall && term_a.target_.DynamicCall) {
|
|
1773
1557
|
const at_ = term_a.at_;
|
|
1774
|
-
if(term_a.target_.DynamicCall) {
|
|
1775
1558
|
const target_ = term_a.target_;
|
|
1776
1559
|
const effect_ = term_a.effect_;
|
|
1777
1560
|
const typeArguments_ = term_a.typeArguments_;
|
|
@@ -1787,24 +1570,14 @@ const _1 = a_;
|
|
|
1787
1570
|
{
|
|
1788
1571
|
const _c = _1;
|
|
1789
1572
|
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1790
|
-
return
|
|
1791
1573
|
}
|
|
1792
1574
|
}
|
|
1793
1575
|
})), dictionaries_)
|
|
1794
1576
|
return
|
|
1795
1577
|
}
|
|
1796
|
-
|
|
1797
|
-
}
|
|
1798
|
-
{
|
|
1799
|
-
if(term_a.ECall) {
|
|
1800
|
-
const at_ = term_a.at_;
|
|
1801
|
-
if(term_a.target_.StaticCall) {
|
|
1578
|
+
if(term_a.ECall && term_a.target_.StaticCall) {
|
|
1802
1579
|
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
1580
|
}
|
|
1807
|
-
{
|
|
1808
1581
|
if(term_a.ERecord) {
|
|
1809
1582
|
const at_ = term_a.at_;
|
|
1810
1583
|
const fields_ = term_a.fields_;
|
|
@@ -1814,14 +1587,11 @@ const _1 = f_;
|
|
|
1814
1587
|
{
|
|
1815
1588
|
const _c = _1;
|
|
1816
1589
|
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1817
|
-
return
|
|
1818
1590
|
}
|
|
1819
1591
|
}
|
|
1820
1592
|
})))
|
|
1821
1593
|
return
|
|
1822
1594
|
}
|
|
1823
|
-
}
|
|
1824
|
-
{
|
|
1825
1595
|
if(term_a.EWildcard) {
|
|
1826
1596
|
const e_ = term_a;
|
|
1827
1597
|
if((e_.index_ === 0)) {
|
|
@@ -1832,13 +1602,10 @@ const _1 = e_;
|
|
|
1832
1602
|
{
|
|
1833
1603
|
const _c = _1;
|
|
1834
1604
|
return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
1835
|
-
return
|
|
1836
1605
|
}
|
|
1837
1606
|
}
|
|
1838
1607
|
return
|
|
1839
1608
|
}
|
|
1840
|
-
}
|
|
1841
|
-
{
|
|
1842
1609
|
if(term_a.EFunctions) {
|
|
1843
1610
|
const at_ = term_a.at_;
|
|
1844
1611
|
const functions_ = term_a.functions_;
|
|
@@ -1861,8 +1628,6 @@ return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topL
|
|
|
1861
1628
|
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
1862
1629
|
return
|
|
1863
1630
|
}
|
|
1864
|
-
}
|
|
1865
|
-
{
|
|
1866
1631
|
if(term_a.ELet) {
|
|
1867
1632
|
const e_ = term_a;
|
|
1868
1633
|
const self2_ = (((_c) => {
|
|
@@ -1870,7 +1635,7 @@ return ff_compiler_Resolver.Resolver(ff_core_Map.Map_add(self_.variables_, e_.na
|
|
|
1870
1635
|
}))(self_);
|
|
1871
1636
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
1872
1637
|
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()))
|
|
1638
|
+
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
1639
|
}
|
|
1875
1640
|
};
|
|
1876
1641
|
{
|
|
@@ -1878,22 +1643,16 @@ const _1 = e_;
|
|
|
1878
1643
|
{
|
|
1879
1644
|
const _c = _1;
|
|
1880
1645
|
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_))
|
|
1881
|
-
return
|
|
1882
1646
|
}
|
|
1883
1647
|
}
|
|
1884
1648
|
return
|
|
1885
1649
|
}
|
|
1886
|
-
}
|
|
1887
|
-
{
|
|
1888
1650
|
if(term_a.ESequential) {
|
|
1889
1651
|
const at_ = term_a.at_;
|
|
1890
1652
|
const before_ = term_a.before_;
|
|
1891
1653
|
const after_ = term_a.after_;
|
|
1892
1654
|
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
1893
|
-
return
|
|
1894
|
-
}
|
|
1895
1655
|
}
|
|
1896
|
-
{
|
|
1897
1656
|
if(term_a.EAssign) {
|
|
1898
1657
|
const at_ = term_a.at_;
|
|
1899
1658
|
const operator_ = term_a.operator_;
|
|
@@ -1904,8 +1663,6 @@ throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Sy
|
|
|
1904
1663
|
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1905
1664
|
return
|
|
1906
1665
|
}
|
|
1907
|
-
}
|
|
1908
|
-
{
|
|
1909
1666
|
if(term_a.EAssignField) {
|
|
1910
1667
|
const at_ = term_a.at_;
|
|
1911
1668
|
const operator_ = term_a.operator_;
|
|
@@ -1913,24 +1670,16 @@ const record_ = term_a.record_;
|
|
|
1913
1670
|
const field_ = term_a.field_;
|
|
1914
1671
|
const value_ = term_a.value_;
|
|
1915
1672
|
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1916
|
-
return
|
|
1917
|
-
}
|
|
1918
|
-
}
|
|
1919
1673
|
}
|
|
1920
1674
|
}
|
|
1921
1675
|
|
|
1922
1676
|
export async function Resolver_resolveType$(self_, type_, topLevel_, $task) {
|
|
1923
|
-
{
|
|
1924
1677
|
const self_a = self_;
|
|
1925
1678
|
const type_a = type_;
|
|
1926
1679
|
const topLevel_a = topLevel_;
|
|
1927
|
-
{
|
|
1928
1680
|
if(type_a.TVariable) {
|
|
1929
1681
|
return type_
|
|
1930
|
-
return
|
|
1931
|
-
}
|
|
1932
1682
|
}
|
|
1933
|
-
{
|
|
1934
1683
|
if(type_a.TConstructor) {
|
|
1935
1684
|
const constructor_ = type_a;
|
|
1936
1685
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
@@ -1965,7 +1714,6 @@ const _1 = constructor_;
|
|
|
1965
1714
|
{
|
|
1966
1715
|
const _c = _1;
|
|
1967
1716
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...arguments_, returnType_])
|
|
1968
|
-
return
|
|
1969
1717
|
}
|
|
1970
1718
|
}
|
|
1971
1719
|
} else {
|
|
@@ -1974,15 +1722,12 @@ const _1 = constructor_;
|
|
|
1974
1722
|
{
|
|
1975
1723
|
const _c = _1;
|
|
1976
1724
|
return ff_compiler_Syntax.TConstructor(_c.at_, name_, [...effect_, ...generics_])
|
|
1977
|
-
return
|
|
1978
1725
|
}
|
|
1979
1726
|
}
|
|
1980
1727
|
}
|
|
1981
1728
|
return
|
|
1982
1729
|
}
|
|
1983
1730
|
}
|
|
1984
|
-
}
|
|
1985
|
-
}
|
|
1986
1731
|
|
|
1987
1732
|
export async function Resolver_makeEffectArgument$(self_, at_, topLevel_, $task) {
|
|
1988
1733
|
if(topLevel_) {
|
|
@@ -2038,7 +1783,7 @@ return ff_compiler_Syntax.DFunction(definition_.at_, signature_, body_)
|
|
|
2038
1783
|
|
|
2039
1784
|
export async function Resolver_resolveSignature$(self_, signature_, topLevel_, isInstanceMethod_, $task) {
|
|
2040
1785
|
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_))
|
|
1786
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSignatureHook(signature_, isInstanceMethod_, topLevel_))
|
|
2042
1787
|
};
|
|
2043
1788
|
const newSignature_ = (topLevel_
|
|
2044
1789
|
? (((_c) => {
|
|
@@ -2093,52 +1838,30 @@ const _1 = self_;
|
|
|
2093
1838
|
{
|
|
2094
1839
|
const _c = _1;
|
|
2095
1840
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, variableMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, variableLocationMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, ff_core_Map.Map_addAll(self_.types_, typeMap_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.typeGenerics_, _c.typeLocations_, ff_core_Set.Set_removeAll(self_.asyncTypes_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Set.Set_addAll(self_.typeParameters_, ff_core_List.List_toSet(signature_.generics_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
2096
|
-
return
|
|
2097
1841
|
}
|
|
2098
1842
|
}
|
|
2099
1843
|
}
|
|
2100
1844
|
|
|
2101
1845
|
export async function Resolver_resolveCase$(self_, case_, topLevel_, $task) {
|
|
2102
1846
|
function findVariables_(pattern_) {
|
|
2103
|
-
{
|
|
2104
1847
|
const pattern_a = pattern_;
|
|
2105
|
-
{
|
|
2106
1848
|
if(pattern_a.PString) {
|
|
2107
1849
|
return ff_core_Map.empty_()
|
|
2108
|
-
return
|
|
2109
|
-
}
|
|
2110
1850
|
}
|
|
2111
|
-
{
|
|
2112
1851
|
if(pattern_a.PInt) {
|
|
2113
1852
|
return ff_core_Map.empty_()
|
|
2114
|
-
return
|
|
2115
1853
|
}
|
|
2116
|
-
}
|
|
2117
|
-
{
|
|
2118
1854
|
if(pattern_a.PChar) {
|
|
2119
1855
|
return ff_core_Map.empty_()
|
|
2120
|
-
return
|
|
2121
1856
|
}
|
|
2122
|
-
|
|
2123
|
-
{
|
|
2124
|
-
if(pattern_a.PVariable) {
|
|
1857
|
+
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
2125
1858
|
const at_ = pattern_a.at_;
|
|
2126
|
-
if(pattern_a.name_.Some) {
|
|
2127
1859
|
const name_ = pattern_a.name_.value_;
|
|
2128
1860
|
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_, ff_core_Pair.Pair(at_, name_))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
2129
|
-
return
|
|
2130
|
-
}
|
|
2131
1861
|
}
|
|
2132
|
-
|
|
2133
|
-
{
|
|
2134
|
-
if(pattern_a.PVariable) {
|
|
2135
|
-
if(pattern_a.name_.None) {
|
|
1862
|
+
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
2136
1863
|
return ff_core_Map.empty_()
|
|
2137
|
-
return
|
|
2138
|
-
}
|
|
2139
|
-
}
|
|
2140
1864
|
}
|
|
2141
|
-
{
|
|
2142
1865
|
if(pattern_a.PVariant) {
|
|
2143
1866
|
const patterns_ = pattern_a.patterns_;
|
|
2144
1867
|
return ff_core_List.List_foldLeft(ff_core_List.List_map(patterns_, ((pattern_) => {
|
|
@@ -2148,8 +1871,6 @@ return ff_core_Map.Map_addAll(_w1, _w2, ff_core_Ordering.ff_core_Ordering_Order$
|
|
|
2148
1871
|
}))
|
|
2149
1872
|
return
|
|
2150
1873
|
}
|
|
2151
|
-
}
|
|
2152
|
-
{
|
|
2153
1874
|
if(pattern_a.PVariantAs) {
|
|
2154
1875
|
const at_ = pattern_a.at_;
|
|
2155
1876
|
const variableAt_ = pattern_a.variableAt_;
|
|
@@ -2159,16 +1880,11 @@ return ff_core_Pair.Pair(x_, ff_core_Pair.Pair(variableAt_, x_))
|
|
|
2159
1880
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
2160
1881
|
return
|
|
2161
1882
|
}
|
|
2162
|
-
}
|
|
2163
|
-
{
|
|
2164
1883
|
if(pattern_a.PAlias) {
|
|
2165
1884
|
const at_ = pattern_a.at_;
|
|
2166
1885
|
const pattern_ = pattern_a.pattern_;
|
|
2167
1886
|
const variable_ = pattern_a.variable_;
|
|
2168
1887
|
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_, ff_core_Pair.Pair(at_, variable_))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), findVariables_(pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
2169
|
-
return
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
2172
1888
|
}
|
|
2173
1889
|
}
|
|
2174
1890
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -2204,34 +1920,20 @@ return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
|
2204
1920
|
}
|
|
2205
1921
|
|
|
2206
1922
|
export async function Resolver_resolvePattern$(self_, pattern_, $task) {
|
|
2207
|
-
{
|
|
2208
1923
|
const self_a = self_;
|
|
2209
1924
|
const pattern_a = pattern_;
|
|
2210
|
-
{
|
|
2211
1925
|
if(pattern_a.PString) {
|
|
2212
1926
|
return pattern_
|
|
2213
|
-
return
|
|
2214
|
-
}
|
|
2215
1927
|
}
|
|
2216
|
-
{
|
|
2217
1928
|
if(pattern_a.PInt) {
|
|
2218
1929
|
return pattern_
|
|
2219
|
-
return
|
|
2220
|
-
}
|
|
2221
1930
|
}
|
|
2222
|
-
{
|
|
2223
1931
|
if(pattern_a.PChar) {
|
|
2224
1932
|
return pattern_
|
|
2225
|
-
return
|
|
2226
1933
|
}
|
|
2227
|
-
}
|
|
2228
|
-
{
|
|
2229
1934
|
if(pattern_a.PVariable) {
|
|
2230
1935
|
return pattern_
|
|
2231
|
-
return
|
|
2232
|
-
}
|
|
2233
1936
|
}
|
|
2234
|
-
{
|
|
2235
1937
|
if(pattern_a.PVariant) {
|
|
2236
1938
|
const at_ = pattern_a.at_;
|
|
2237
1939
|
const name_ = pattern_a.name_;
|
|
@@ -2243,10 +1945,7 @@ const newPatterns_ = ff_core_List.List_map(patterns_, ((_w1) => {
|
|
|
2243
1945
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
2244
1946
|
}));
|
|
2245
1947
|
return ff_compiler_Syntax.PVariant(at_, newName_, newPatterns_)
|
|
2246
|
-
return
|
|
2247
|
-
}
|
|
2248
1948
|
}
|
|
2249
|
-
{
|
|
2250
1949
|
if(pattern_a.PVariantAs) {
|
|
2251
1950
|
const at_ = pattern_a.at_;
|
|
2252
1951
|
const name_ = pattern_a.name_;
|
|
@@ -2256,33 +1955,22 @@ const newName_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_,
|
|
|
2256
1955
|
return name_
|
|
2257
1956
|
}));
|
|
2258
1957
|
return ff_compiler_Syntax.PVariantAs(at_, newName_, variableAt_, variable_)
|
|
2259
|
-
return
|
|
2260
|
-
}
|
|
2261
1958
|
}
|
|
2262
|
-
{
|
|
2263
1959
|
if(pattern_a.PAlias) {
|
|
2264
1960
|
const at_ = pattern_a.at_;
|
|
2265
1961
|
const pattern_ = pattern_a.pattern_;
|
|
2266
1962
|
const variable_ = pattern_a.variable_;
|
|
2267
1963
|
const newPattern_ = ff_compiler_Resolver.Resolver_resolvePattern(self_, pattern_);
|
|
2268
1964
|
return ff_compiler_Syntax.PAlias(at_, newPattern_, variable_)
|
|
2269
|
-
return
|
|
2270
|
-
}
|
|
2271
|
-
}
|
|
2272
1965
|
}
|
|
2273
1966
|
}
|
|
2274
1967
|
|
|
2275
1968
|
export async function Resolver_containsAsyncType$(self_, type_, $task) {
|
|
2276
|
-
{
|
|
2277
1969
|
const self_a = self_;
|
|
2278
1970
|
const type_a = type_;
|
|
2279
|
-
{
|
|
2280
1971
|
if(type_a.TVariable) {
|
|
2281
1972
|
return false
|
|
2282
|
-
return
|
|
2283
1973
|
}
|
|
2284
|
-
}
|
|
2285
|
-
{
|
|
2286
1974
|
if(type_a.TConstructor) {
|
|
2287
1975
|
const constructor_ = type_a;
|
|
2288
1976
|
const name_ = (ff_core_String.String_contains(constructor_.name_, "$")
|
|
@@ -2301,8 +1989,6 @@ return ff_compiler_Resolver.Resolver_containsAsyncType(self_, _w1)
|
|
|
2301
1989
|
return
|
|
2302
1990
|
}
|
|
2303
1991
|
}
|
|
2304
|
-
}
|
|
2305
|
-
}
|
|
2306
1992
|
|
|
2307
1993
|
|
|
2308
1994
|
|