firefly-compiler 0.4.21 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/Dictionaries.ff +10 -10
- package/compiler/Inference.ff +167 -148
- package/compiler/JsEmitter.ff +2 -2
- package/compiler/LspHook.ff +2 -1
- package/compiler/Main.ff +12 -4
- package/compiler/Patterns.ff +1 -1
- package/compiler/Resolver.ff +154 -146
- package/compiler/Substitution.ff +2 -2
- package/compiler/Unification.ff +1 -1
- package/core/Map.ff +8 -0
- package/core/Set.ff +7 -0
- package/lsp/Handler.ff +11 -3
- package/output/js/ff/compiler/Dictionaries.mjs +18 -18
- package/output/js/ff/compiler/Inference.mjs +182 -88
- package/output/js/ff/compiler/JsEmitter.mjs +8 -6
- package/output/js/ff/compiler/LspHook.mjs +4 -2
- package/output/js/ff/compiler/Main.mjs +16 -5
- package/output/js/ff/compiler/Patterns.mjs +4 -4
- package/output/js/ff/compiler/Resolver.mjs +372 -202
- package/output/js/ff/compiler/Substitution.mjs +4 -4
- package/output/js/ff/compiler/Unification.mjs +4 -4
- package/output/js/ff/core/Map.mjs +26 -0
- package/output/js/ff/core/Set.mjs +16 -0
- package/package.json +1 -1
- package/vscode/package.json +1 -1
- package/bin/firefly.mjs +0 -2
- package/guide/Main.ff +0 -22
|
@@ -106,6 +106,11 @@ 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_) {
|
|
@@ -334,7 +339,7 @@ const _1 = f_;
|
|
|
334
339
|
{
|
|
335
340
|
const _c = _1;
|
|
336
341
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
337
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
342
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
338
343
|
})))
|
|
339
344
|
return
|
|
340
345
|
}
|
|
@@ -357,7 +362,7 @@ const _1 = f_;
|
|
|
357
362
|
{
|
|
358
363
|
const _c = _1;
|
|
359
364
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
360
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
365
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
361
366
|
})))
|
|
362
367
|
return
|
|
363
368
|
}
|
|
@@ -480,29 +485,28 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
480
485
|
const _1 = definition_;
|
|
481
486
|
{
|
|
482
487
|
const _c = _1;
|
|
483
|
-
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true))
|
|
488
|
+
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true, false))
|
|
484
489
|
}
|
|
485
490
|
}
|
|
486
491
|
}
|
|
487
492
|
|
|
488
|
-
export function Resolver_resolveTerm(self_, term_, topLevel_) {
|
|
489
|
-
|
|
490
|
-
const
|
|
491
|
-
|
|
492
|
-
if(term_a.EString) {
|
|
493
|
+
export function Resolver_resolveTerm(self_, term_, topLevel_, inField_ = false) {
|
|
494
|
+
{
|
|
495
|
+
const _1 = term_;
|
|
496
|
+
if(_1.EString) {
|
|
493
497
|
return term_
|
|
494
498
|
}
|
|
495
|
-
if(
|
|
499
|
+
if(_1.EChar) {
|
|
496
500
|
return term_
|
|
497
501
|
}
|
|
498
|
-
if(
|
|
502
|
+
if(_1.EInt) {
|
|
499
503
|
return term_
|
|
500
504
|
}
|
|
501
|
-
if(
|
|
505
|
+
if(_1.EFloat) {
|
|
502
506
|
return term_
|
|
503
507
|
}
|
|
504
|
-
if(
|
|
505
|
-
const e_ =
|
|
508
|
+
if(_1.EVariable) {
|
|
509
|
+
const e_ = _1;
|
|
506
510
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
507
511
|
const at_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variableLocations_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
508
512
|
return e_.at_
|
|
@@ -524,24 +528,24 @@ return term_
|
|
|
524
528
|
}))
|
|
525
529
|
return
|
|
526
530
|
}
|
|
527
|
-
if(
|
|
528
|
-
const at_ =
|
|
529
|
-
const t_ =
|
|
530
|
-
const items_ =
|
|
531
|
+
if(_1.EList) {
|
|
532
|
+
const at_ = _1.at_;
|
|
533
|
+
const t_ = _1.elementType_;
|
|
534
|
+
const items_ = _1.items_;
|
|
531
535
|
return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(self_, t_, topLevel_), ff_core_List.List_map(items_, ((_1) => {
|
|
532
536
|
{
|
|
533
537
|
const item_ = _1.first_;
|
|
534
538
|
const spread_ = _1.second_;
|
|
535
|
-
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
539
|
+
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_, false), spread_)
|
|
536
540
|
}
|
|
537
541
|
})))
|
|
538
542
|
return
|
|
539
543
|
}
|
|
540
|
-
if(
|
|
541
|
-
const at_ =
|
|
542
|
-
const name_ =
|
|
543
|
-
const typeArguments_ =
|
|
544
|
-
const arguments_ =
|
|
544
|
+
if(_1.EVariant) {
|
|
545
|
+
const at_ = _1.at_;
|
|
546
|
+
const name_ = _1.name_;
|
|
547
|
+
const typeArguments_ = _1.typeArguments_;
|
|
548
|
+
const arguments_ = _1.arguments_;
|
|
545
549
|
return ff_compiler_Syntax.EVariant(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
546
550
|
return name_
|
|
547
551
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -552,17 +556,17 @@ return ff_core_List.List_map(_w1, ((a_) => {
|
|
|
552
556
|
const _1 = a_;
|
|
553
557
|
{
|
|
554
558
|
const _c = _1;
|
|
555
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
559
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
556
560
|
}
|
|
557
561
|
}
|
|
558
562
|
}))
|
|
559
563
|
})))
|
|
560
564
|
return
|
|
561
565
|
}
|
|
562
|
-
if(
|
|
563
|
-
const at_ =
|
|
564
|
-
const name_ =
|
|
565
|
-
const typeArguments_ =
|
|
566
|
+
if(_1.EVariantIs) {
|
|
567
|
+
const at_ = _1.at_;
|
|
568
|
+
const name_ = _1.name_;
|
|
569
|
+
const typeArguments_ = _1.typeArguments_;
|
|
566
570
|
return ff_compiler_Syntax.EVariantIs(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
567
571
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variant: " + name_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
568
572
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -570,61 +574,61 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
570
574
|
})))
|
|
571
575
|
return
|
|
572
576
|
}
|
|
573
|
-
if(
|
|
574
|
-
const at_ =
|
|
575
|
-
const name_ =
|
|
576
|
-
const record_ =
|
|
577
|
-
const arguments_ =
|
|
577
|
+
if(_1.ECopy) {
|
|
578
|
+
const at_ = _1.at_;
|
|
579
|
+
const name_ = _1.name_;
|
|
580
|
+
const record_ = _1.record_;
|
|
581
|
+
const arguments_ = _1.arguments_;
|
|
578
582
|
return ff_compiler_Syntax.ECopy(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
579
583
|
return name_
|
|
580
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), ff_core_List.List_map(arguments_, ((f_) => {
|
|
584
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_, true), ff_core_List.List_map(arguments_, ((f_) => {
|
|
581
585
|
{
|
|
582
586
|
const _1 = f_;
|
|
583
587
|
{
|
|
584
588
|
const _c = _1;
|
|
585
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
589
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
586
590
|
}
|
|
587
591
|
}
|
|
588
592
|
})))
|
|
589
593
|
return
|
|
590
594
|
}
|
|
591
|
-
if(
|
|
592
|
-
const e_ =
|
|
595
|
+
if(_1.EField) {
|
|
596
|
+
const e_ = _1;
|
|
593
597
|
{
|
|
594
598
|
const _1 = e_;
|
|
595
599
|
{
|
|
596
600
|
const _c = _1;
|
|
597
|
-
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
601
|
+
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_, true), _c.field_)
|
|
598
602
|
}
|
|
599
603
|
}
|
|
600
604
|
return
|
|
601
605
|
}
|
|
602
|
-
if(
|
|
603
|
-
const at_ =
|
|
604
|
-
const lambdaAt_ =
|
|
605
|
-
const cases_ =
|
|
606
|
+
if(_1.ELambda) {
|
|
607
|
+
const at_ = _1.at_;
|
|
608
|
+
const lambdaAt_ = _1.lambda_.at_;
|
|
609
|
+
const cases_ = _1.lambda_.cases_;
|
|
606
610
|
const effect_ = ff_compiler_Resolver.Resolver_makeEffectArgument(self_, lambdaAt_, topLevel_);
|
|
607
611
|
return ff_compiler_Syntax.ELambda(at_, ff_compiler_Syntax.Lambda(lambdaAt_, effect_, ff_core_List.List_map(cases_, ((_w1) => {
|
|
608
612
|
return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
609
613
|
}))))
|
|
610
614
|
return
|
|
611
615
|
}
|
|
612
|
-
if(
|
|
613
|
-
const at_ =
|
|
614
|
-
const value_ =
|
|
615
|
-
const effect_ =
|
|
616
|
-
const function_ =
|
|
617
|
-
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_))
|
|
618
|
-
}
|
|
619
|
-
if(
|
|
620
|
-
const at_ =
|
|
621
|
-
const target_ =
|
|
622
|
-
const effect_ =
|
|
623
|
-
const typeArguments_ =
|
|
624
|
-
const arguments_ =
|
|
625
|
-
const dictionaries_ =
|
|
616
|
+
if(_1.EPipe) {
|
|
617
|
+
const at_ = _1.at_;
|
|
618
|
+
const value_ = _1.value_;
|
|
619
|
+
const effect_ = _1.effect_;
|
|
620
|
+
const function_ = _1.function_;
|
|
621
|
+
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))
|
|
622
|
+
}
|
|
623
|
+
if(_1.ECall && _1.target_.DynamicCall) {
|
|
624
|
+
const at_ = _1.at_;
|
|
625
|
+
const target_ = _1.target_;
|
|
626
|
+
const effect_ = _1.effect_;
|
|
627
|
+
const typeArguments_ = _1.typeArguments_;
|
|
628
|
+
const arguments_ = _1.arguments_;
|
|
629
|
+
const dictionaries_ = _1.dictionaries_;
|
|
626
630
|
return ff_compiler_Syntax.ECall(at_, (((_c) => {
|
|
627
|
-
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_), _c.tailCall_)
|
|
631
|
+
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_, false), _c.tailCall_)
|
|
628
632
|
}))(target_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
629
633
|
return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
630
634
|
})), ff_core_List.List_map(arguments_, ((a_) => {
|
|
@@ -632,31 +636,31 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
632
636
|
const _1 = a_;
|
|
633
637
|
{
|
|
634
638
|
const _c = _1;
|
|
635
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
639
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
636
640
|
}
|
|
637
641
|
}
|
|
638
642
|
})), dictionaries_)
|
|
639
643
|
return
|
|
640
644
|
}
|
|
641
|
-
if(
|
|
645
|
+
if(_1.ECall && _1.target_.StaticCall) {
|
|
642
646
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Internal error: Static calls not expected in the Resolver phase"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
643
647
|
}
|
|
644
|
-
if(
|
|
645
|
-
const at_ =
|
|
646
|
-
const fields_ =
|
|
648
|
+
if(_1.ERecord) {
|
|
649
|
+
const at_ = _1.at_;
|
|
650
|
+
const fields_ = _1.fields_;
|
|
647
651
|
return ff_compiler_Syntax.ERecord(at_, ff_core_List.List_map(fields_, ((f_) => {
|
|
648
652
|
{
|
|
649
653
|
const _1 = f_;
|
|
650
654
|
{
|
|
651
655
|
const _c = _1;
|
|
652
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
656
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
653
657
|
}
|
|
654
658
|
}
|
|
655
659
|
})))
|
|
656
660
|
return
|
|
657
661
|
}
|
|
658
|
-
if(
|
|
659
|
-
const e_ =
|
|
662
|
+
if(_1.EWildcard) {
|
|
663
|
+
const e_ = _1;
|
|
660
664
|
if((e_.index_ === 0)) {
|
|
661
665
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(e_.at_, "Unbound wildcard"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
662
666
|
};
|
|
@@ -669,10 +673,10 @@ return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
|
669
673
|
}
|
|
670
674
|
return
|
|
671
675
|
}
|
|
672
|
-
if(
|
|
673
|
-
const at_ =
|
|
674
|
-
const functions_ =
|
|
675
|
-
const body_ =
|
|
676
|
+
if(_1.EFunctions) {
|
|
677
|
+
const at_ = _1.at_;
|
|
678
|
+
const functions_ = _1.functions_;
|
|
679
|
+
const body_ = _1.body_;
|
|
676
680
|
const functionMap_ = ff_core_List.List_toMap(ff_core_List.List_map(ff_core_List.List_map(functions_, ((_w1) => {
|
|
677
681
|
return _w1.signature_.name_
|
|
678
682
|
})), ((name_) => {
|
|
@@ -688,11 +692,11 @@ return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, fu
|
|
|
688
692
|
}))(self_);
|
|
689
693
|
return ff_compiler_Syntax.EFunctions(at_, ff_core_List.List_map(functions_, ((_w1) => {
|
|
690
694
|
return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topLevel_, false)
|
|
691
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
695
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_, false))
|
|
692
696
|
return
|
|
693
697
|
}
|
|
694
|
-
if(
|
|
695
|
-
const e_ =
|
|
698
|
+
if(_1.ELet) {
|
|
699
|
+
const e_ = _1;
|
|
696
700
|
const self2_ = (((_c) => {
|
|
697
701
|
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_)
|
|
698
702
|
}))(self_);
|
|
@@ -705,34 +709,35 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
705
709
|
const _1 = e_;
|
|
706
710
|
{
|
|
707
711
|
const _c = _1;
|
|
708
|
-
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_))
|
|
712
|
+
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_, false))
|
|
709
713
|
}
|
|
710
714
|
}
|
|
711
715
|
return
|
|
712
716
|
}
|
|
713
|
-
if(
|
|
714
|
-
const at_ =
|
|
715
|
-
const before_ =
|
|
716
|
-
const after_ =
|
|
717
|
-
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
717
|
+
if(_1.ESequential) {
|
|
718
|
+
const at_ = _1.at_;
|
|
719
|
+
const before_ = _1.before_;
|
|
720
|
+
const after_ = _1.after_;
|
|
721
|
+
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_, false))
|
|
718
722
|
}
|
|
719
|
-
if(
|
|
720
|
-
const at_ =
|
|
721
|
-
const operator_ =
|
|
722
|
-
const variable_ =
|
|
723
|
-
const value_ =
|
|
723
|
+
if(_1.EAssign) {
|
|
724
|
+
const at_ = _1.at_;
|
|
725
|
+
const operator_ = _1.operator_;
|
|
726
|
+
const variable_ = _1.variable_;
|
|
727
|
+
const value_ = _1.value_;
|
|
724
728
|
return ff_compiler_Syntax.EAssign(at_, operator_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variables_, variable_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
725
729
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variable: " + variable_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
726
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
730
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
727
731
|
return
|
|
728
732
|
}
|
|
729
|
-
if(
|
|
730
|
-
const at_ =
|
|
731
|
-
const operator_ =
|
|
732
|
-
const record_ =
|
|
733
|
-
const field_ =
|
|
734
|
-
const value_ =
|
|
735
|
-
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
733
|
+
if(_1.EAssignField) {
|
|
734
|
+
const at_ = _1.at_;
|
|
735
|
+
const operator_ = _1.operator_;
|
|
736
|
+
const record_ = _1.record_;
|
|
737
|
+
const field_ = _1.field_;
|
|
738
|
+
const value_ = _1.value_;
|
|
739
|
+
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))
|
|
740
|
+
}
|
|
736
741
|
}
|
|
737
742
|
}
|
|
738
743
|
|
|
@@ -873,7 +878,7 @@ const _1 = p_;
|
|
|
873
878
|
{
|
|
874
879
|
const _c = _1;
|
|
875
880
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self2_, p_.valueType_, topLevel_), ff_core_Option.Option_map(p_.default_, ((_w1) => {
|
|
876
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_)
|
|
881
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_, false)
|
|
877
882
|
})))
|
|
878
883
|
return
|
|
879
884
|
}
|
|
@@ -920,7 +925,7 @@ return ff_core_Map.empty_()
|
|
|
920
925
|
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
921
926
|
const at_ = pattern_a.at_;
|
|
922
927
|
const name_ = pattern_a.name_.value_;
|
|
923
|
-
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_,
|
|
928
|
+
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_, ff_compiler_Resolver.CaseVariable(at_, name_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
924
929
|
}
|
|
925
930
|
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
926
931
|
return ff_core_Map.empty_()
|
|
@@ -936,10 +941,11 @@ return
|
|
|
936
941
|
}
|
|
937
942
|
if(pattern_a.PVariantAs) {
|
|
938
943
|
const at_ = pattern_a.at_;
|
|
944
|
+
const variant_ = pattern_a.name_;
|
|
939
945
|
const variableAt_ = pattern_a.variableAt_;
|
|
940
946
|
const variable_ = pattern_a.variable_;
|
|
941
947
|
return ff_core_List.List_toMap(ff_core_List.List_map(ff_core_Option.Option_toList(variable_), ((x_) => {
|
|
942
|
-
return ff_core_Pair.Pair(x_,
|
|
948
|
+
return ff_core_Pair.Pair(x_, ff_compiler_Resolver.CaseVariable(variableAt_, x_, ff_core_Option.Some(variant_)))
|
|
943
949
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
944
950
|
return
|
|
945
951
|
}
|
|
@@ -947,7 +953,7 @@ if(pattern_a.PAlias) {
|
|
|
947
953
|
const at_ = pattern_a.at_;
|
|
948
954
|
const pattern_ = pattern_a.pattern_;
|
|
949
955
|
const variable_ = pattern_a.variable_;
|
|
950
|
-
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_,
|
|
956
|
+
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_, ff_compiler_Resolver.CaseVariable(at_, variable_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), findVariables_(pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
951
957
|
}
|
|
952
958
|
}
|
|
953
959
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -959,27 +965,27 @@ let guards_ = [];
|
|
|
959
965
|
const variableMap2_ = ff_core_List.List_foldLeft(case_.guards_, variableMap_, ((variableMap1_, g_) => {
|
|
960
966
|
const self2_ = (((_c) => {
|
|
961
967
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
962
|
-
return p_.
|
|
968
|
+
return p_.name_
|
|
963
969
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
964
|
-
return p_.
|
|
970
|
+
return p_.at_
|
|
965
971
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
966
972
|
}))(self_);
|
|
967
973
|
const guard_ = (((_c) => {
|
|
968
|
-
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
974
|
+
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_, false), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
969
975
|
}))(g_);
|
|
970
976
|
guards_ = [guard_, ...guards_];
|
|
971
977
|
return ff_core_Map.Map_addAll(variableMap1_, findVariables_(guard_.pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
972
978
|
}));
|
|
973
979
|
const self3_ = (((_c) => {
|
|
974
980
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
975
|
-
return p_.
|
|
981
|
+
return p_.name_
|
|
976
982
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
977
|
-
return p_.
|
|
983
|
+
return p_.at_
|
|
978
984
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
979
985
|
}))(self_);
|
|
980
986
|
return ff_compiler_Syntax.MatchCase(case_.at_, ff_core_List.List_map(case_.patterns_, ((_w1) => {
|
|
981
987
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
982
|
-
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_))
|
|
988
|
+
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_, false))
|
|
983
989
|
}
|
|
984
990
|
|
|
985
991
|
export function Resolver_resolvePattern(self_, pattern_) {
|
|
@@ -1271,7 +1277,7 @@ const _1 = f_;
|
|
|
1271
1277
|
{
|
|
1272
1278
|
const _c = _1;
|
|
1273
1279
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
1274
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
1280
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
1275
1281
|
})))
|
|
1276
1282
|
return
|
|
1277
1283
|
}
|
|
@@ -1294,7 +1300,7 @@ const _1 = f_;
|
|
|
1294
1300
|
{
|
|
1295
1301
|
const _c = _1;
|
|
1296
1302
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, valueType_, ff_core_Option.Option_map(f_.default_, ((_w1) => {
|
|
1297
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true)
|
|
1303
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, true, false)
|
|
1298
1304
|
})))
|
|
1299
1305
|
return
|
|
1300
1306
|
}
|
|
@@ -1417,29 +1423,28 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
1417
1423
|
const _1 = definition_;
|
|
1418
1424
|
{
|
|
1419
1425
|
const _c = _1;
|
|
1420
|
-
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true))
|
|
1426
|
+
return ff_compiler_Syntax.DLet(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, definition_.variableType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, definition_.value_, true, false))
|
|
1421
1427
|
}
|
|
1422
1428
|
}
|
|
1423
1429
|
}
|
|
1424
1430
|
|
|
1425
|
-
export async function Resolver_resolveTerm$(self_, term_, topLevel_, $task) {
|
|
1426
|
-
|
|
1427
|
-
const
|
|
1428
|
-
|
|
1429
|
-
if(term_a.EString) {
|
|
1431
|
+
export async function Resolver_resolveTerm$(self_, term_, topLevel_, inField_ = false, $task) {
|
|
1432
|
+
{
|
|
1433
|
+
const _1 = term_;
|
|
1434
|
+
if(_1.EString) {
|
|
1430
1435
|
return term_
|
|
1431
1436
|
}
|
|
1432
|
-
if(
|
|
1437
|
+
if(_1.EChar) {
|
|
1433
1438
|
return term_
|
|
1434
1439
|
}
|
|
1435
|
-
if(
|
|
1440
|
+
if(_1.EInt) {
|
|
1436
1441
|
return term_
|
|
1437
1442
|
}
|
|
1438
|
-
if(
|
|
1443
|
+
if(_1.EFloat) {
|
|
1439
1444
|
return term_
|
|
1440
1445
|
}
|
|
1441
|
-
if(
|
|
1442
|
-
const e_ =
|
|
1446
|
+
if(_1.EVariable) {
|
|
1447
|
+
const e_ = _1;
|
|
1443
1448
|
if(ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) {
|
|
1444
1449
|
const at_ = ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variableLocations_, e_.name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1445
1450
|
return e_.at_
|
|
@@ -1461,24 +1466,24 @@ return term_
|
|
|
1461
1466
|
}))
|
|
1462
1467
|
return
|
|
1463
1468
|
}
|
|
1464
|
-
if(
|
|
1465
|
-
const at_ =
|
|
1466
|
-
const t_ =
|
|
1467
|
-
const items_ =
|
|
1469
|
+
if(_1.EList) {
|
|
1470
|
+
const at_ = _1.at_;
|
|
1471
|
+
const t_ = _1.elementType_;
|
|
1472
|
+
const items_ = _1.items_;
|
|
1468
1473
|
return ff_compiler_Syntax.EList(at_, ff_compiler_Resolver.Resolver_resolveType(self_, t_, topLevel_), ff_core_List.List_map(items_, ((_1) => {
|
|
1469
1474
|
{
|
|
1470
1475
|
const item_ = _1.first_;
|
|
1471
1476
|
const spread_ = _1.second_;
|
|
1472
|
-
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_), spread_)
|
|
1477
|
+
return ff_core_Pair.Pair(ff_compiler_Resolver.Resolver_resolveTerm(self_, item_, topLevel_, false), spread_)
|
|
1473
1478
|
}
|
|
1474
1479
|
})))
|
|
1475
1480
|
return
|
|
1476
1481
|
}
|
|
1477
|
-
if(
|
|
1478
|
-
const at_ =
|
|
1479
|
-
const name_ =
|
|
1480
|
-
const typeArguments_ =
|
|
1481
|
-
const arguments_ =
|
|
1482
|
+
if(_1.EVariant) {
|
|
1483
|
+
const at_ = _1.at_;
|
|
1484
|
+
const name_ = _1.name_;
|
|
1485
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1486
|
+
const arguments_ = _1.arguments_;
|
|
1482
1487
|
return ff_compiler_Syntax.EVariant(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1483
1488
|
return name_
|
|
1484
1489
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -1489,17 +1494,17 @@ return ff_core_List.List_map(_w1, ((a_) => {
|
|
|
1489
1494
|
const _1 = a_;
|
|
1490
1495
|
{
|
|
1491
1496
|
const _c = _1;
|
|
1492
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1497
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
1493
1498
|
}
|
|
1494
1499
|
}
|
|
1495
1500
|
}))
|
|
1496
1501
|
})))
|
|
1497
1502
|
return
|
|
1498
1503
|
}
|
|
1499
|
-
if(
|
|
1500
|
-
const at_ =
|
|
1501
|
-
const name_ =
|
|
1502
|
-
const typeArguments_ =
|
|
1504
|
+
if(_1.EVariantIs) {
|
|
1505
|
+
const at_ = _1.at_;
|
|
1506
|
+
const name_ = _1.name_;
|
|
1507
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1503
1508
|
return ff_compiler_Syntax.EVariantIs(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1504
1509
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variant: " + name_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1505
1510
|
})), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
@@ -1507,61 +1512,61 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1507
1512
|
})))
|
|
1508
1513
|
return
|
|
1509
1514
|
}
|
|
1510
|
-
if(
|
|
1511
|
-
const at_ =
|
|
1512
|
-
const name_ =
|
|
1513
|
-
const record_ =
|
|
1514
|
-
const arguments_ =
|
|
1515
|
+
if(_1.ECopy) {
|
|
1516
|
+
const at_ = _1.at_;
|
|
1517
|
+
const name_ = _1.name_;
|
|
1518
|
+
const record_ = _1.record_;
|
|
1519
|
+
const arguments_ = _1.arguments_;
|
|
1515
1520
|
return ff_compiler_Syntax.ECopy(at_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variants_, name_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1516
1521
|
return name_
|
|
1517
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), ff_core_List.List_map(arguments_, ((f_) => {
|
|
1522
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_, true), ff_core_List.List_map(arguments_, ((f_) => {
|
|
1518
1523
|
{
|
|
1519
1524
|
const _1 = f_;
|
|
1520
1525
|
{
|
|
1521
1526
|
const _c = _1;
|
|
1522
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1527
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
1523
1528
|
}
|
|
1524
1529
|
}
|
|
1525
1530
|
})))
|
|
1526
1531
|
return
|
|
1527
1532
|
}
|
|
1528
|
-
if(
|
|
1529
|
-
const e_ =
|
|
1533
|
+
if(_1.EField) {
|
|
1534
|
+
const e_ = _1;
|
|
1530
1535
|
{
|
|
1531
1536
|
const _1 = e_;
|
|
1532
1537
|
{
|
|
1533
1538
|
const _c = _1;
|
|
1534
|
-
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_), _c.field_)
|
|
1539
|
+
return ff_compiler_Syntax.EField(_c.at_, _c.newtype_, ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.record_, topLevel_, true), _c.field_)
|
|
1535
1540
|
}
|
|
1536
1541
|
}
|
|
1537
1542
|
return
|
|
1538
1543
|
}
|
|
1539
|
-
if(
|
|
1540
|
-
const at_ =
|
|
1541
|
-
const lambdaAt_ =
|
|
1542
|
-
const cases_ =
|
|
1544
|
+
if(_1.ELambda) {
|
|
1545
|
+
const at_ = _1.at_;
|
|
1546
|
+
const lambdaAt_ = _1.lambda_.at_;
|
|
1547
|
+
const cases_ = _1.lambda_.cases_;
|
|
1543
1548
|
const effect_ = ff_compiler_Resolver.Resolver_makeEffectArgument(self_, lambdaAt_, topLevel_);
|
|
1544
1549
|
return ff_compiler_Syntax.ELambda(at_, ff_compiler_Syntax.Lambda(lambdaAt_, effect_, ff_core_List.List_map(cases_, ((_w1) => {
|
|
1545
1550
|
return ff_compiler_Resolver.Resolver_resolveCase(self_, _w1, topLevel_)
|
|
1546
1551
|
}))))
|
|
1547
1552
|
return
|
|
1548
1553
|
}
|
|
1549
|
-
if(
|
|
1550
|
-
const at_ =
|
|
1551
|
-
const value_ =
|
|
1552
|
-
const effect_ =
|
|
1553
|
-
const function_ =
|
|
1554
|
-
return ff_compiler_Syntax.EPipe(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, function_, topLevel_))
|
|
1555
|
-
}
|
|
1556
|
-
if(
|
|
1557
|
-
const at_ =
|
|
1558
|
-
const target_ =
|
|
1559
|
-
const effect_ =
|
|
1560
|
-
const typeArguments_ =
|
|
1561
|
-
const arguments_ =
|
|
1562
|
-
const dictionaries_ =
|
|
1554
|
+
if(_1.EPipe) {
|
|
1555
|
+
const at_ = _1.at_;
|
|
1556
|
+
const value_ = _1.value_;
|
|
1557
|
+
const effect_ = _1.effect_;
|
|
1558
|
+
const function_ = _1.function_;
|
|
1559
|
+
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))
|
|
1560
|
+
}
|
|
1561
|
+
if(_1.ECall && _1.target_.DynamicCall) {
|
|
1562
|
+
const at_ = _1.at_;
|
|
1563
|
+
const target_ = _1.target_;
|
|
1564
|
+
const effect_ = _1.effect_;
|
|
1565
|
+
const typeArguments_ = _1.typeArguments_;
|
|
1566
|
+
const arguments_ = _1.arguments_;
|
|
1567
|
+
const dictionaries_ = _1.dictionaries_;
|
|
1563
1568
|
return ff_compiler_Syntax.ECall(at_, (((_c) => {
|
|
1564
|
-
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_), _c.tailCall_)
|
|
1569
|
+
return ff_compiler_Syntax.DynamicCall(ff_compiler_Resolver.Resolver_resolveTerm(self_, target_.function_, topLevel_, false), _c.tailCall_)
|
|
1565
1570
|
}))(target_), ff_compiler_Resolver.Resolver_resolveType(self_, effect_, topLevel_), ff_core_List.List_map(typeArguments_, ((_w1) => {
|
|
1566
1571
|
return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
1567
1572
|
})), ff_core_List.List_map(arguments_, ((a_) => {
|
|
@@ -1569,31 +1574,31 @@ return ff_compiler_Resolver.Resolver_resolveType(self_, _w1, topLevel_)
|
|
|
1569
1574
|
const _1 = a_;
|
|
1570
1575
|
{
|
|
1571
1576
|
const _c = _1;
|
|
1572
|
-
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_))
|
|
1577
|
+
return ff_compiler_Syntax.Argument(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, a_.value_, topLevel_, false))
|
|
1573
1578
|
}
|
|
1574
1579
|
}
|
|
1575
1580
|
})), dictionaries_)
|
|
1576
1581
|
return
|
|
1577
1582
|
}
|
|
1578
|
-
if(
|
|
1583
|
+
if(_1.ECall && _1.target_.StaticCall) {
|
|
1579
1584
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Internal error: Static calls not expected in the Resolver phase"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1580
1585
|
}
|
|
1581
|
-
if(
|
|
1582
|
-
const at_ =
|
|
1583
|
-
const fields_ =
|
|
1586
|
+
if(_1.ERecord) {
|
|
1587
|
+
const at_ = _1.at_;
|
|
1588
|
+
const fields_ = _1.fields_;
|
|
1584
1589
|
return ff_compiler_Syntax.ERecord(at_, ff_core_List.List_map(fields_, ((f_) => {
|
|
1585
1590
|
{
|
|
1586
1591
|
const _1 = f_;
|
|
1587
1592
|
{
|
|
1588
1593
|
const _c = _1;
|
|
1589
|
-
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_))
|
|
1594
|
+
return ff_compiler_Syntax.Field(_c.at_, _c.name_, ff_compiler_Resolver.Resolver_resolveTerm(self_, f_.value_, topLevel_, false))
|
|
1590
1595
|
}
|
|
1591
1596
|
}
|
|
1592
1597
|
})))
|
|
1593
1598
|
return
|
|
1594
1599
|
}
|
|
1595
|
-
if(
|
|
1596
|
-
const e_ =
|
|
1600
|
+
if(_1.EWildcard) {
|
|
1601
|
+
const e_ = _1;
|
|
1597
1602
|
if((e_.index_ === 0)) {
|
|
1598
1603
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(e_.at_, "Unbound wildcard"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1599
1604
|
};
|
|
@@ -1606,10 +1611,10 @@ return ff_compiler_Syntax.EWildcard(_c.at_, _c.index_)
|
|
|
1606
1611
|
}
|
|
1607
1612
|
return
|
|
1608
1613
|
}
|
|
1609
|
-
if(
|
|
1610
|
-
const at_ =
|
|
1611
|
-
const functions_ =
|
|
1612
|
-
const body_ =
|
|
1614
|
+
if(_1.EFunctions) {
|
|
1615
|
+
const at_ = _1.at_;
|
|
1616
|
+
const functions_ = _1.functions_;
|
|
1617
|
+
const body_ = _1.body_;
|
|
1613
1618
|
const functionMap_ = ff_core_List.List_toMap(ff_core_List.List_map(ff_core_List.List_map(functions_, ((_w1) => {
|
|
1614
1619
|
return _w1.signature_.name_
|
|
1615
1620
|
})), ((name_) => {
|
|
@@ -1625,11 +1630,11 @@ return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, fu
|
|
|
1625
1630
|
}))(self_);
|
|
1626
1631
|
return ff_compiler_Syntax.EFunctions(at_, ff_core_List.List_map(functions_, ((_w1) => {
|
|
1627
1632
|
return ff_compiler_Resolver.Resolver_resolveFunctionDefinition(self2_, _w1, topLevel_, false)
|
|
1628
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_))
|
|
1633
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self2_, body_, topLevel_, false))
|
|
1629
1634
|
return
|
|
1630
1635
|
}
|
|
1631
|
-
if(
|
|
1632
|
-
const e_ =
|
|
1636
|
+
if(_1.ELet) {
|
|
1637
|
+
const e_ = _1;
|
|
1633
1638
|
const self2_ = (((_c) => {
|
|
1634
1639
|
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_)
|
|
1635
1640
|
}))(self_);
|
|
@@ -1642,34 +1647,35 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ResolveSymb
|
|
|
1642
1647
|
const _1 = e_;
|
|
1643
1648
|
{
|
|
1644
1649
|
const _c = _1;
|
|
1645
|
-
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_))
|
|
1650
|
+
return ff_compiler_Syntax.ELet(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self_, e_.valueType_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, e_.value_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self2_, e_.body_, topLevel_, false))
|
|
1646
1651
|
}
|
|
1647
1652
|
}
|
|
1648
1653
|
return
|
|
1649
1654
|
}
|
|
1650
|
-
if(
|
|
1651
|
-
const at_ =
|
|
1652
|
-
const before_ =
|
|
1653
|
-
const after_ =
|
|
1654
|
-
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_))
|
|
1655
|
+
if(_1.ESequential) {
|
|
1656
|
+
const at_ = _1.at_;
|
|
1657
|
+
const before_ = _1.before_;
|
|
1658
|
+
const after_ = _1.after_;
|
|
1659
|
+
return ff_compiler_Syntax.ESequential(at_, ff_compiler_Resolver.Resolver_resolveTerm(self_, before_, topLevel_, false), ff_compiler_Resolver.Resolver_resolveTerm(self_, after_, topLevel_, false))
|
|
1655
1660
|
}
|
|
1656
|
-
if(
|
|
1657
|
-
const at_ =
|
|
1658
|
-
const operator_ =
|
|
1659
|
-
const variable_ =
|
|
1660
|
-
const value_ =
|
|
1661
|
+
if(_1.EAssign) {
|
|
1662
|
+
const at_ = _1.at_;
|
|
1663
|
+
const operator_ = _1.operator_;
|
|
1664
|
+
const variable_ = _1.variable_;
|
|
1665
|
+
const value_ = _1.value_;
|
|
1661
1666
|
return ff_compiler_Syntax.EAssign(at_, operator_, ff_core_Option.Option_else(ff_core_Map.Map_get(self_.variables_, variable_, ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), (() => {
|
|
1662
1667
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, ("No such variable: " + variable_)), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1663
|
-
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1668
|
+
})), ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_, false))
|
|
1664
1669
|
return
|
|
1665
1670
|
}
|
|
1666
|
-
if(
|
|
1667
|
-
const at_ =
|
|
1668
|
-
const operator_ =
|
|
1669
|
-
const record_ =
|
|
1670
|
-
const field_ =
|
|
1671
|
-
const value_ =
|
|
1672
|
-
return ff_compiler_Syntax.EAssignField(at_, operator_, ff_compiler_Resolver.Resolver_resolveTerm(self_, record_, topLevel_), field_, ff_compiler_Resolver.Resolver_resolveTerm(self_, value_, topLevel_))
|
|
1671
|
+
if(_1.EAssignField) {
|
|
1672
|
+
const at_ = _1.at_;
|
|
1673
|
+
const operator_ = _1.operator_;
|
|
1674
|
+
const record_ = _1.record_;
|
|
1675
|
+
const field_ = _1.field_;
|
|
1676
|
+
const value_ = _1.value_;
|
|
1677
|
+
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))
|
|
1678
|
+
}
|
|
1673
1679
|
}
|
|
1674
1680
|
}
|
|
1675
1681
|
|
|
@@ -1810,7 +1816,7 @@ const _1 = p_;
|
|
|
1810
1816
|
{
|
|
1811
1817
|
const _c = _1;
|
|
1812
1818
|
return ff_compiler_Syntax.Parameter(_c.at_, _c.mutable_, _c.name_, ff_compiler_Resolver.Resolver_resolveType(self2_, p_.valueType_, topLevel_), ff_core_Option.Option_map(p_.default_, ((_w1) => {
|
|
1813
|
-
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_)
|
|
1819
|
+
return ff_compiler_Resolver.Resolver_resolveTerm(self2_, _w1, topLevel_, false)
|
|
1814
1820
|
})))
|
|
1815
1821
|
return
|
|
1816
1822
|
}
|
|
@@ -1857,7 +1863,7 @@ return ff_core_Map.empty_()
|
|
|
1857
1863
|
if(pattern_a.PVariable && pattern_a.name_.Some) {
|
|
1858
1864
|
const at_ = pattern_a.at_;
|
|
1859
1865
|
const name_ = pattern_a.name_.value_;
|
|
1860
|
-
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_,
|
|
1866
|
+
return ff_core_List.List_toMap([ff_core_Pair.Pair(name_, ff_compiler_Resolver.CaseVariable(at_, name_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1861
1867
|
}
|
|
1862
1868
|
if(pattern_a.PVariable && pattern_a.name_.None) {
|
|
1863
1869
|
return ff_core_Map.empty_()
|
|
@@ -1873,10 +1879,11 @@ return
|
|
|
1873
1879
|
}
|
|
1874
1880
|
if(pattern_a.PVariantAs) {
|
|
1875
1881
|
const at_ = pattern_a.at_;
|
|
1882
|
+
const variant_ = pattern_a.name_;
|
|
1876
1883
|
const variableAt_ = pattern_a.variableAt_;
|
|
1877
1884
|
const variable_ = pattern_a.variable_;
|
|
1878
1885
|
return ff_core_List.List_toMap(ff_core_List.List_map(ff_core_Option.Option_toList(variable_), ((x_) => {
|
|
1879
|
-
return ff_core_Pair.Pair(x_,
|
|
1886
|
+
return ff_core_Pair.Pair(x_, ff_compiler_Resolver.CaseVariable(variableAt_, x_, ff_core_Option.Some(variant_)))
|
|
1880
1887
|
})), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1881
1888
|
return
|
|
1882
1889
|
}
|
|
@@ -1884,7 +1891,7 @@ if(pattern_a.PAlias) {
|
|
|
1884
1891
|
const at_ = pattern_a.at_;
|
|
1885
1892
|
const pattern_ = pattern_a.pattern_;
|
|
1886
1893
|
const variable_ = pattern_a.variable_;
|
|
1887
|
-
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_,
|
|
1894
|
+
return ff_core_Map.Map_addAll(ff_core_List.List_toMap([ff_core_Pair.Pair(variable_, ff_compiler_Resolver.CaseVariable(at_, variable_, ff_core_Option.None()))], ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), findVariables_(pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1888
1895
|
}
|
|
1889
1896
|
}
|
|
1890
1897
|
const variableMap_ = ff_core_List.List_foldLeft(ff_core_List.List_map(case_.patterns_, ((pattern_) => {
|
|
@@ -1896,27 +1903,27 @@ let guards_ = [];
|
|
|
1896
1903
|
const variableMap2_ = ff_core_List.List_foldLeft(case_.guards_, variableMap_, ((variableMap1_, g_) => {
|
|
1897
1904
|
const self2_ = (((_c) => {
|
|
1898
1905
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
1899
|
-
return p_.
|
|
1906
|
+
return p_.name_
|
|
1900
1907
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap1_, ((_, p_) => {
|
|
1901
|
-
return p_.
|
|
1908
|
+
return p_.at_
|
|
1902
1909
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1903
1910
|
}))(self_);
|
|
1904
1911
|
const guard_ = (((_c) => {
|
|
1905
|
-
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
1912
|
+
return ff_compiler_Syntax.MatchGuard(_c.at_, ff_compiler_Resolver.Resolver_resolveTerm(self2_, g_.term_, topLevel_, false), ff_compiler_Resolver.Resolver_resolvePattern(self2_, g_.pattern_))
|
|
1906
1913
|
}))(g_);
|
|
1907
1914
|
guards_ = [guard_, ...guards_];
|
|
1908
1915
|
return ff_core_Map.Map_addAll(variableMap1_, findVariables_(guard_.pattern_), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1909
1916
|
}));
|
|
1910
1917
|
const self3_ = (((_c) => {
|
|
1911
1918
|
return ff_compiler_Resolver.Resolver(ff_core_Map.Map_addAll(self_.variables_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
1912
|
-
return p_.
|
|
1919
|
+
return p_.name_
|
|
1913
1920
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Map.Map_addAll(self_.variableLocations_, ff_core_Map.Map_mapValues(variableMap2_, ((_, p_) => {
|
|
1914
|
-
return p_.
|
|
1921
|
+
return p_.at_
|
|
1915
1922
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String), _c.variants_, _c.types_, _c.typeGenerics_, _c.typeLocations_, _c.asyncTypes_, _c.typeParameters_, _c.traits_, _c.traitLocations_, _c.state_, _c.lspHook_)
|
|
1916
1923
|
}))(self_);
|
|
1917
1924
|
return ff_compiler_Syntax.MatchCase(case_.at_, ff_core_List.List_map(case_.patterns_, ((_w1) => {
|
|
1918
1925
|
return ff_compiler_Resolver.Resolver_resolvePattern(self_, _w1)
|
|
1919
|
-
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_))
|
|
1926
|
+
})), ff_core_List.List_reverse(guards_), ff_compiler_Resolver.Resolver_resolveTerm(self3_, case_.body_, topLevel_, false))
|
|
1920
1927
|
}
|
|
1921
1928
|
|
|
1922
1929
|
export async function Resolver_resolvePattern$(self_, pattern_, $task) {
|
|
@@ -1990,6 +1997,169 @@ return
|
|
|
1990
1997
|
}
|
|
1991
1998
|
}
|
|
1992
1999
|
|
|
2000
|
+
export const ff_core_Any_HasAnyTag$ff_compiler_Resolver_CaseVariable = {
|
|
2001
|
+
anyTag_() {
|
|
2002
|
+
return ff_core_Any.internalAnyTag_((("ff:compiler/Resolver.CaseVariable" + "[") + "]"))
|
|
2003
|
+
},
|
|
2004
|
+
async anyTag_$($task) {
|
|
2005
|
+
return ff_core_Any.internalAnyTag_((("ff:compiler/Resolver.CaseVariable" + "[") + "]"))
|
|
2006
|
+
}
|
|
2007
|
+
};
|
|
2008
|
+
|
|
2009
|
+
export const ff_core_Show_Show$ff_compiler_Resolver_CaseVariable = {
|
|
2010
|
+
show_(value_) {
|
|
2011
|
+
const value_a = value_;
|
|
2012
|
+
{
|
|
2013
|
+
const z_ = value_a;
|
|
2014
|
+
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_)) + ")")
|
|
2015
|
+
}
|
|
2016
|
+
},
|
|
2017
|
+
async show_$(value_, $task) {
|
|
2018
|
+
const value_a = value_;
|
|
2019
|
+
{
|
|
2020
|
+
const z_ = value_a;
|
|
2021
|
+
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_)) + ")")
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2024
|
+
};
|
|
2025
|
+
|
|
2026
|
+
export const ff_core_Equal_Equal$ff_compiler_Resolver_CaseVariable = {
|
|
2027
|
+
equals_(x_, y_) {
|
|
2028
|
+
const x_a = x_;
|
|
2029
|
+
const y_a = y_;
|
|
2030
|
+
if((x_ === y_)) {
|
|
2031
|
+
return true
|
|
2032
|
+
}
|
|
2033
|
+
{
|
|
2034
|
+
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_)))
|
|
2035
|
+
}
|
|
2036
|
+
},
|
|
2037
|
+
async equals_$(x_, y_, $task) {
|
|
2038
|
+
const x_a = x_;
|
|
2039
|
+
const y_a = y_;
|
|
2040
|
+
if((x_ === y_)) {
|
|
2041
|
+
return true
|
|
2042
|
+
}
|
|
2043
|
+
{
|
|
2044
|
+
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_)))
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
};
|
|
1993
2048
|
|
|
2049
|
+
export const ff_core_Ordering_Order$ff_compiler_Resolver_CaseVariable = {
|
|
2050
|
+
compare_(x_, y_) {
|
|
2051
|
+
const x_a = x_;
|
|
2052
|
+
const y_a = y_;
|
|
2053
|
+
if((x_ === y_)) {
|
|
2054
|
+
return ff_core_Ordering.OrderingSame()
|
|
2055
|
+
}
|
|
2056
|
+
{
|
|
2057
|
+
const atOrdering_ = ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_Location.compare_(x_.at_, y_.at_);
|
|
2058
|
+
if((atOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2059
|
+
return atOrdering_
|
|
2060
|
+
} else {
|
|
2061
|
+
const nameOrdering_ = ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String.compare_(x_.name_, y_.name_);
|
|
2062
|
+
if((nameOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2063
|
+
return nameOrdering_
|
|
2064
|
+
} else {
|
|
2065
|
+
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_);
|
|
2066
|
+
if((asBoundOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2067
|
+
return asBoundOrdering_
|
|
2068
|
+
} else {
|
|
2069
|
+
return ff_core_Ordering.OrderingSame()
|
|
2070
|
+
}
|
|
2071
|
+
}
|
|
2072
|
+
}
|
|
2073
|
+
return
|
|
2074
|
+
}
|
|
2075
|
+
},
|
|
2076
|
+
async compare_$(x_, y_, $task) {
|
|
2077
|
+
const x_a = x_;
|
|
2078
|
+
const y_a = y_;
|
|
2079
|
+
if((x_ === y_)) {
|
|
2080
|
+
return ff_core_Ordering.OrderingSame()
|
|
2081
|
+
}
|
|
2082
|
+
{
|
|
2083
|
+
const atOrdering_ = ff_compiler_Syntax.ff_core_Ordering_Order$ff_compiler_Syntax_Location.compare_(x_.at_, y_.at_);
|
|
2084
|
+
if((atOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2085
|
+
return atOrdering_
|
|
2086
|
+
} else {
|
|
2087
|
+
const nameOrdering_ = ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String.compare_(x_.name_, y_.name_);
|
|
2088
|
+
if((nameOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2089
|
+
return nameOrdering_
|
|
2090
|
+
} else {
|
|
2091
|
+
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_);
|
|
2092
|
+
if((asBoundOrdering_ !== ff_core_Ordering.OrderingSame())) {
|
|
2093
|
+
return asBoundOrdering_
|
|
2094
|
+
} else {
|
|
2095
|
+
return ff_core_Ordering.OrderingSame()
|
|
2096
|
+
}
|
|
2097
|
+
}
|
|
2098
|
+
}
|
|
2099
|
+
return
|
|
2100
|
+
}
|
|
2101
|
+
}
|
|
2102
|
+
};
|
|
2103
|
+
|
|
2104
|
+
export const ff_core_Serializable_Serializable$ff_compiler_Resolver_CaseVariable = {
|
|
2105
|
+
serializeUsing_(serialization_, value_) {
|
|
2106
|
+
const serialization_a = serialization_;
|
|
2107
|
+
const value_a = value_;
|
|
2108
|
+
{
|
|
2109
|
+
const v_ = value_a;
|
|
2110
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2111
|
+
ff_core_Serializable.Serialization_autoResize(serialization_, 1);
|
|
2112
|
+
ff_core_Buffer.Buffer_setUint8(serialization_.buffer_, serialization_.offset_, 0);
|
|
2113
|
+
serialization_.offset_ += 1;
|
|
2114
|
+
ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.serializeUsing_(serialization_, v_.at_);
|
|
2115
|
+
ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.serializeUsing_(serialization_, v_.name_);
|
|
2116
|
+
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_)
|
|
2117
|
+
return
|
|
2118
|
+
}
|
|
2119
|
+
},
|
|
2120
|
+
deserializeUsing_(serialization_) {
|
|
2121
|
+
const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
|
|
2122
|
+
serialization_.offset_ += 1;
|
|
2123
|
+
{
|
|
2124
|
+
const _1 = variantIndex_;
|
|
2125
|
+
if(_1 === 0) {
|
|
2126
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2127
|
+
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_))
|
|
2128
|
+
}
|
|
2129
|
+
{
|
|
2130
|
+
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)})
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2133
|
+
},
|
|
2134
|
+
async serializeUsing_$(serialization_, value_, $task) {
|
|
2135
|
+
const serialization_a = serialization_;
|
|
2136
|
+
const value_a = value_;
|
|
2137
|
+
{
|
|
2138
|
+
const v_ = value_a;
|
|
2139
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2140
|
+
ff_core_Serializable.Serialization_autoResize(serialization_, 1);
|
|
2141
|
+
ff_core_Buffer.Buffer_setUint8(serialization_.buffer_, serialization_.offset_, 0);
|
|
2142
|
+
serialization_.offset_ += 1;
|
|
2143
|
+
ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Location.serializeUsing_(serialization_, v_.at_);
|
|
2144
|
+
ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String.serializeUsing_(serialization_, v_.name_);
|
|
2145
|
+
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_)
|
|
2146
|
+
return
|
|
2147
|
+
}
|
|
2148
|
+
},
|
|
2149
|
+
async deserializeUsing_$(serialization_, $task) {
|
|
2150
|
+
const variantIndex_ = ff_core_Buffer.Buffer_grabUint8(serialization_.buffer_, serialization_.offset_);
|
|
2151
|
+
serialization_.offset_ += 1;
|
|
2152
|
+
{
|
|
2153
|
+
const _1 = variantIndex_;
|
|
2154
|
+
if(_1 === 0) {
|
|
2155
|
+
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 33), 0);
|
|
2156
|
+
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_))
|
|
2157
|
+
}
|
|
2158
|
+
{
|
|
2159
|
+
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)})
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
}
|
|
2163
|
+
};
|
|
1994
2164
|
|
|
1995
2165
|
|