From e1af9db839ea3b274304755a33328fc8c47f00f6 Mon Sep 17 00:00:00 2001 From: Luyu Cheng Date: Mon, 1 Jan 2024 20:19:51 +0800 Subject: [PATCH] Remove parsed output from compiler tests --- compiler/shared/test/diff/LambLift.mls | 12 +-- compiler/shared/test/diff/LiftType.mls | 15 ++-- compiler/shared/test/diff/Lifter.mls | 45 ++++------- compiler/shared/test/diff/LifterBlks.mls | 54 +++++-------- compiler/shared/test/diff/mono.mls | 81 +++++++------------ .../test/scala/mlscript/compiler/Test.scala | 2 - 6 files changed, 69 insertions(+), 140 deletions(-) diff --git a/compiler/shared/test/diff/LambLift.mls b/compiler/shared/test/diff/LambLift.mls index ec08d4f080..81fecb52dd 100644 --- a/compiler/shared/test/diff/LambLift.mls +++ b/compiler/shared/test/diff/LambLift.mls @@ -9,8 +9,7 @@ fun foo() = (new Foo()).bar local(1) foo() -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List()),Blk(List(NuFunDef(Some(false),Var(local),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuTypeDef(Cls,TypeName(Foo),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,App(Var(foo),Tup(List())))))))))))), Sel(Bra(false,App(NuNew(Var(Foo)),Tup(List()))),Var(bar))))))), App(Var(local),Tup(List((None,Fld(_,IntLit(1))))))))))), App(Var(foo),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([x,]) {fun bar = () => +((this).x, foo$1(),)} @@ -27,8 +26,7 @@ foo() fun foo(f) = f(1) foo(x => x+1) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(f))))),Blk(List(App(Var(f),Tup(List((None,Fld(_,IntLit(1))))))))))), App(Var(foo),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Lambda1$2$1([]) {fun apply = (x,) => +(x, 1,)} @@ -45,8 +43,7 @@ fun foo(x) = f(x) bar(y => y+x) foo(1) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuFunDef(Some(false),Var(bar),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(f))))),Blk(List(App(Var(f),Tup(List((None,Fld(_,Var(x))))))))))), App(Var(bar),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(y))))),App(Var(+),Tup(List((None,Fld(_,Var(y))), (None,Fld(_,Var(x))))))))))))))))), App(Var(foo),Tup(List((None,Fld(_,IntLit(1)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Lambda1$3$1([x,]) {fun apply = (y,) => +(y, (this).x,)} @@ -67,8 +64,7 @@ class A(y: Int){ fun app(a) = foo(z => a.bar(z)) app(new A(1)) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(f))))),Blk(List(App(Var(f),Tup(List((None,Fld(_,IntLit(1))))))))))), NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((Some(Var(y)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(z))))),App(Var(+),Tup(List((None,Fld(_,Var(y))), (None,Fld(_,Var(z)))))))))))), NuFunDef(None,Var(app),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(a))))),Blk(List(App(Var(foo),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(z))))),App(Sel(Var(a),Var(bar)),Tup(List((None,Fld(_,Var(z))))))))))))))))), App(Var(app),Tup(List((None,Fld(_,App(NuNew(Var(A)),Tup(List((None,Fld(_,IntLit(1))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([y: Int,]) {fun bar = (z,) => +((this).y, z,)} diff --git a/compiler/shared/test/diff/LiftType.mls b/compiler/shared/test/diff/LiftType.mls index 4f2bebe4d1..e8a5206b51 100644 --- a/compiler/shared/test/diff/LiftType.mls +++ b/compiler/shared/test/diff/LiftType.mls @@ -7,8 +7,7 @@ class CTX{ } //│ |#class| |CTX|{|→|#class| |A| |{||}|↵|#fun| |foo|(|f|#:| |A| |#=>| |A|)|#:| |(|A| |#=>| |A|)| |#=>| |A| |#=| |f|(|#new| |A|)|←|↵|}| //│ Parsed: {class CTX {class A {}; fun foo = (f: (A,) => A,) => f(new A,) : (A -> A) -> A}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(CTX),List(),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List())), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(f)),Fld(_,Lam(Tup(List((None,Fld(_,Var(A))))),Var(A)))))),Asc(App(Var(f),Tup(List((None,Fld(_,NuNew(Var(A))))))),Function(Tuple(List((None,Field(None,Function(Tuple(List((None,Field(None,TypeName(A))))),TypeName(A)))))),TypeName(A))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class CTX$1_A$2([par$CTX$1,]) {} @@ -25,8 +24,7 @@ class CTX(x, y){ } //│ |#class| |CTX|(|x|,| |y|)|{|→|#class| |A|{| |#fun| |foo| |#=| |x|}|↵|#class| |B|#:| |A| |{| |#fun| |foo| |#=| |y|}|↵|#fun| |foo|(|any|#:| |[|A|,| |B|]|)|#:| |[|B|,| |A|]| |#=| |[|any|._2|,| |any|._1|]|←|↵|}| //│ Parsed: {class CTX(x, y,) {class A {fun foo = x}; class B: A {fun foo = y}; fun foo = (any: [A, B,],) => [(any)._2, (any)._1,] : [B, A]}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(CTX),List(),Some(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(x)))))), NuTypeDef(Cls,TypeName(B),List(),None,None,Some(TypeName(A)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(y)))))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(any)),Fld(_,Tup(List((None,Fld(_,Var(A))), (None,Fld(_,Var(B))))))))),Asc(Tup(List((None,Fld(_,Sel(Var(any),Var(_2)))), (None,Fld(_,Sel(Var(any),Var(_1)))))),Tuple(List((None,Field(None,TypeName(B))), (None,Field(None,TypeName(A)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class CTX$1_A$2([par$CTX$1,]) {fun foo = () => ((this).par$CTX$1).x} @@ -44,8 +42,7 @@ class CTX(x, y){ } //│ |#class| |CTX|(|x|,| |y|)|{|→|#class| |A|{| |#fun| |foo| |#=| |x|}|↵|#class| |B|#:| |A| |{| |#fun| |foo| |#=| |y|}|↵|#fun| |foo|(|any|#:| |{|p1|#:| |A|,| |p2|#:| |B|}|)|#:| |[|B|,| |A|]| |#=| |[|any|.p2|,| |any|.p1|]|←|↵|}| //│ Parsed: {class CTX(x, y,) {class A {fun foo = x}; class B: A {fun foo = y}; fun foo = (any: '{' {p1: A, p2: B} '}',) => [(any).p2, (any).p1,] : [B, A]}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(CTX),List(),Some(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(x)))))), NuTypeDef(Cls,TypeName(B),List(),None,None,Some(TypeName(A)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(y)))))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(any)),Fld(_,Bra(true,Rcd(List((Var(p1),Fld(_,Var(A))), (Var(p2),Fld(_,Var(B)))))))))),Asc(Tup(List((None,Fld(_,Sel(Var(any),Var(p2)))), (None,Fld(_,Sel(Var(any),Var(p1)))))),Tuple(List((None,Field(None,TypeName(B))), (None,Field(None,TypeName(A)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class CTX$1_A$2([par$CTX$1,]) {fun foo = () => ((this).par$CTX$1).x} @@ -63,8 +60,7 @@ class CTX(x, y){ } //│ |#class| |CTX|(|x|,| |y|)|{|→|#class| |A|{| |#fun| |foo| |#=| |x|}|↵|#class| |B|‹|T|›| |{| |#fun| |foo| |#=| |y|}|↵|#fun| |foo|(|any|#:| |[|A|,| |B|‹|A|›|]|)|#:| |[|[|B|‹|A|›|,| |A|]|,| |A|]| |#=| |[|any|,| |any|._1|]|←|↵|}| //│ Parsed: {class CTX(x, y,) {class A {fun foo = x}; class B‹T› {fun foo = y}; fun foo = (any: [A, B‹A›,],) => [any, (any)._1,] : [[B[A], A], A]}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(CTX),List(),Some(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(x)))))), NuTypeDef(Cls,TypeName(B),List((None,TypeName(T))),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(y)))))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(any)),Fld(_,Tup(List((None,Fld(_,Var(A))), (None,Fld(_,TyApp(Var(B),List(TypeName(A))))))))))),Asc(Tup(List((None,Fld(_,Var(any))), (None,Fld(_,Sel(Var(any),Var(_1)))))),Tuple(List((None,Field(None,Tuple(List((None,Field(None,AppliedType(TypeName(B),List(TypeName(A))))), (None,Field(None,TypeName(A))))))), (None,Field(None,TypeName(A)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class CTX$1_A$2([par$CTX$1,]) {fun foo = () => ((this).par$CTX$1).x} @@ -85,8 +81,7 @@ class CTX{ } //│ |#class| |CTX|{|→|#fun| |ctx|(|x|,|y|)| |#=| |→|#class| |A|{| |#fun| |foo| |#=| |x| |}|↵|#fun| |bar|‹|T|›|(|any|#:| |T|)|#:| |A| |#=| |→|#let| |x| |#=| |#new| |T|↵|#new| |A|←|↵|(|#new| |CTX|)|.bar|‹|CTX|›|←|←|↵|}| //│ Parsed: {class CTX {fun ctx = (x, y,) => {class A {fun foo = x}; fun bar = (any: T,) => {let x = new T; new A} : A; ('(' new CTX ')').bar‹CTX›}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(CTX),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(ctx),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y))))),Blk(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(x)))))), NuFunDef(None,Var(bar),None,List(TypeName(T)),Left(Lam(Tup(List((Some(Var(any)),Fld(_,Var(T))))),Asc(Blk(List(NuFunDef(Some(false),Var(x),None,List(),Left(NuNew(Var(T)))), NuNew(Var(A)))),TypeName(A))))), TyApp(Sel(Bra(false,NuNew(Var(CTX))),Var(bar)),List(TypeName(CTX))))))))))))) +//│ //│ Lifted: //│ Lifting failed: mlscript.codegen.CodeGenError: Cannot find type T. Class values are not supported in lifter. //│ diff --git a/compiler/shared/test/diff/Lifter.mls b/compiler/shared/test/diff/Lifter.mls index a1eb51a20e..f46f6611ea 100644 --- a/compiler/shared/test/diff/Lifter.mls +++ b/compiler/shared/test/diff/Lifter.mls @@ -27,8 +27,7 @@ class A(x) { } //│ |#class| |A|(|x|)| |{|→|#class| |B|(|y|)| |{|→|#fun| |getX| |#=| |x|↵|#fun| |getB1| |#=| |B1|(|y|)|↵|#class| |C|(|z|)| |{|→|#fun| |inc|(||)| |#=| |x| |+| |1|↵|#fun| |getY| |#=| |y|↵|#fun| |getA| |#=| |A|(|z|)|↵|#fun| |getB|(|w|)| |#=| |B|(|w|)|↵|#fun| |getC| |#=| |#new| |C|(|inc|(||)|)|↵|#fun| |getSelf| |#=| |this|←|↵|}|←|↵|}|↵|#class| |B1|(|y|)| |{|→|#fun| |getX| |#=| |x|↵|#fun| |getY| |#=| |y|↵|#fun| |getB| |#=| |#new| |B|(|y|)|↵|#fun| |getB1| |#=| |#new| |B1|(|y|)|←|↵|}|↵|#fun| |getB| |#=| |#new| |B|(|x|)|↵|#fun| |getB2|(|y|)| |#=| |B1|(|y|)|↵|#fun| |getB3|(|z|)| |#=| |getB2|(|z|)|↵|#fun| |getA| |#=| |A|(|x|)|←|↵|}| //│ Parsed: {class A(x,) {class B(y,) {fun getX = x; fun getB1 = B1(y,); class C(z,) {fun inc = () => +(x, 1,); fun getY = y; fun getA = A(z,); fun getB = (w,) => B(w,); fun getC = (new C)(inc(),); fun getSelf = this}}; class B1(y,) {fun getX = x; fun getY = y; fun getB = (new B)(y,); fun getB1 = (new B1)(y,)}; fun getB = (new B)(x,); fun getB2 = (y,) => B1(y,); fun getB3 = (z,) => getB2(z,); fun getA = A(x,)}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),Some(Tup(List((None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(getX),None,List(),Left(Var(x))), NuFunDef(None,Var(getB1),None,List(),Left(App(Var(B1),Tup(List((None,Fld(_,Var(y)))))))), NuTypeDef(Cls,TypeName(C),List(),Some(Tup(List((None,Fld(_,Var(z)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(inc),None,List(),Left(Lam(Tup(List()),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1))))))))), NuFunDef(None,Var(getY),None,List(),Left(Var(y))), NuFunDef(None,Var(getA),None,List(),Left(App(Var(A),Tup(List((None,Fld(_,Var(z)))))))), NuFunDef(None,Var(getB),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(w))))),App(Var(B),Tup(List((None,Fld(_,Var(w))))))))), NuFunDef(None,Var(getC),None,List(),Left(App(NuNew(Var(C)),Tup(List((None,Fld(_,App(Var(inc),Tup(List()))))))))), NuFunDef(None,Var(getSelf),None,List(),Left(Var(this))))))))), NuTypeDef(Cls,TypeName(B1),List(),Some(Tup(List((None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(getX),None,List(),Left(Var(x))), NuFunDef(None,Var(getY),None,List(),Left(Var(y))), NuFunDef(None,Var(getB),None,List(),Left(App(NuNew(Var(B)),Tup(List((None,Fld(_,Var(y)))))))), NuFunDef(None,Var(getB1),None,List(),Left(App(NuNew(Var(B1)),Tup(List((None,Fld(_,Var(y))))))))))), NuFunDef(None,Var(getB),None,List(),Left(App(NuNew(Var(B)),Tup(List((None,Fld(_,Var(x)))))))), NuFunDef(None,Var(getB2),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(y))))),App(Var(B1),Tup(List((None,Fld(_,Var(y))))))))), NuFunDef(None,Var(getB3),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(z))))),App(Var(getB2),Tup(List((None,Fld(_,Var(z))))))))), NuFunDef(None,Var(getA),None,List(),Left(App(Var(A),Tup(List((None,Fld(_,Var(x))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2_C$4([par$A$1_B$2, z, x,]) { @@ -67,8 +66,7 @@ class A(x) { } //│ |#class| |A|(|x|)| |{|→|#class| |B|(|y|)| |{|→|#class| |C|(|z|)| |{|→|#fun| |sum| |#=| |x| |+| |y| |+| |z|←|↵|}|←|↵|}|←|↵|}| //│ Parsed: {class A(x,) {class B(y,) {class C(z,) {fun sum = +(+(x, y,), z,)}}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),Some(Tup(List((None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(C),List(),Some(Tup(List((None,Fld(_,Var(z)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(sum),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))))), (None,Fld(_,Var(z))))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2_C$3([par$A$1_B$2, z, x,]) { @@ -107,8 +105,7 @@ new C{ } //│ |#class| |A|(|x|)| |{|→|#class| |B|{|→|#fun| |foo| |#=| |1|↵|#fun| |bar| |#=| |11|←|↵|}|↵|#fun| |getB| |#=| |#new| |B|{|→|#fun| |foo| |#=| |2|↵|#fun| |bar| |#=| |12|←|↵|}|↵|#fun| |bar| |#=| |13|←|↵|}|↵|#class| |C|#:| |A|{|→|#fun| |getB| |#=| |#new| |B|{|→|#fun| |foo| |#=| |3|↵|#fun| |bar| |#=| |14|←|↵|}|↵|#fun| |bar| |#=| |15|←|↵|}|↵|#new| |C|{|→|#fun| |getB| |#=| |#new| |B|{|→|#fun| |foo| |#=| |4|↵|#fun| |bar| |#=| |16|←|↵|}|↵|#fun| |bar| |#=| |17|←|↵|}| //│ Parsed: {class A(x,) {class B {fun foo = 1; fun bar = 11}; fun getB = new B { ‹fun foo = 2; fun bar = 12› }; fun bar = 13}; class C: A {fun getB = new B { ‹fun foo = 3; fun bar = 14› }; fun bar = 15}; new C { ‹fun getB = new B { ‹fun foo = 4; fun bar = 16› }; fun bar = 17› }} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(1))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(11)))))), NuFunDef(None,Var(getB),None,List(),Left(Rft(NuNew(Var(B)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(2))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(12)))))))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(13)))))), NuTypeDef(Cls,TypeName(C),List(),None,None,Some(TypeName(A)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(getB),None,List(),Left(Rft(NuNew(Var(B)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(3))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(14)))))))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(15)))))), Rft(NuNew(Var(C)),TypingUnit(List(NuFunDef(None,Var(getB),None,List(),Left(Rft(NuNew(Var(B)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(4))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(16)))))))), NuFunDef(None,Var(bar),None,List(),Left(IntLit(17)))))))) +//│ //│ Lifted: //│ Lifting failed: mlscript.codegen.CodeGenError: Cannot find type B. Class values are not supported in lifter. //│ @@ -124,8 +121,7 @@ class Parent(x) { } //│ |#class| |Parent|‹|T|,| |U|,| |V|›|(|x|)| |{| |→|#fun| |foo|(|x|#:| |Int|)|#:| |T| |#=| |x|+|1|↵|#class| |Inner|‹|W|›|(|y|#:| |Int|)|{|→|#fun| |bar|(|z|#:| |U|)| |#=| |foo|(|y|)|↵|#fun| |boo|(|z|#:| |W|)| |#=| |z|←|↵|}|←|↵|}| //│ Parsed: {class Parent‹T, U, V›(x,) {fun foo = (x: Int,) => +(x, 1,) : T; class Inner‹W›(y: Int,) {fun bar = (z: U,) => foo(y,); fun boo = (z: W,) => z}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Parent),List((None,TypeName(T)), (None,TypeName(U)), (None,TypeName(V))),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(x)),Fld(_,Var(Int))))),Asc(App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1)))))),TypeName(T))))), NuTypeDef(Cls,TypeName(Inner),List((None,TypeName(W))),Some(Tup(List((Some(Var(y)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(Lam(Tup(List((Some(Var(z)),Fld(_,Var(U))))),App(Var(foo),Tup(List((None,Fld(_,Var(y))))))))), NuFunDef(None,Var(boo),None,List(),Left(Lam(Tup(List((Some(Var(z)),Fld(_,Var(W))))),Var(z)))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Parent$1_Inner$2[W,U]([par$Parent$1, y: Int,]) { @@ -147,8 +143,7 @@ class A(x: Int): ({a1: Int} & B & D(x)) { } //│ |#class| |B|‹|T|›| |{||}|↵|#class| |C| |{||}|↵|#class| |D|(|y|#:| |Int|)| |{||}|↵|#class| |A|‹|T|,| |U|›|(|x|#:| |Int|)|#:| |(|{|a1|#:| |Int|}| |&| |B|‹|T|›| |&| |D|(|x|)|)| |{|→|#fun| |getA|(||)| |#=| |#new| |C|{|→|#fun| |foo|(|x|#:| |T|)| |#=| |x|←|↵|}|←|↵|}| //│ Parsed: {class B‹T› {}; class C {}; class D(y: Int,) {}; class A‹T, U›(x: Int,): {a1: Int} & B[T] & D[x] {fun getA = () => new C { ‹fun foo = (x: T,) => x› }}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(B),List((None,TypeName(T))),None,None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(C),List(),None,None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(D),List(),Some(Tup(List((Some(Var(y)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(A),List((None,TypeName(T)), (None,TypeName(U))),Some(Tup(List((Some(Var(x)),Fld(_,Var(Int)))))),None,Some(Inter(Inter(Record(List((Var(a1),Field(None,TypeName(Int))))),AppliedType(TypeName(B),List(TypeName(T)))),AppliedType(TypeName(D),List(TypeName(x))))),List(),None,None,TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(Lam(Tup(List()),Rft(NuNew(Var(C)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(x)),Fld(_,Var(T))))),Var(x))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class B$1[T]([]) {} @@ -169,8 +164,7 @@ class A(x: Int) extends {a1: Int}, B, D(x){ } //│ |#class| |B|‹|T|›| |{||}|↵|#class| |C| |{||}|↵|#class| |D|(|y|#:| |Int|)| |{||}|↵|#class| |A|‹|T|,| |U|›|(|x|#:| |Int|)| |#extends| |{|a1|#:| |Int|}|,| |B|‹|T|›|,| |D|(|x|)|{|→|#fun| |getA|(||)| |#=| |#new| |C|{|→|#fun| |foo|(|x|)| |#=| |x|←|↵|}|←|↵|}| //│ Parsed: {class B‹T› {}; class C {}; class D(y: Int,) {}; class A‹T, U›(x: Int,): '{' {a1: Int} '}', B‹T›, D(x,) {fun getA = () => new C { ‹fun foo = (x,) => x› }}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(B),List((None,TypeName(T))),None,None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(C),List(),None,None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(D),List(),Some(Tup(List((Some(Var(y)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(A),List((None,TypeName(T)), (None,TypeName(U))),Some(Tup(List((Some(Var(x)),Fld(_,Var(Int)))))),None,None,List(Bra(true,Rcd(List((Var(a1),Fld(_,Var(Int)))))), TyApp(Var(B),List(TypeName(T))), App(Var(D),Tup(List((None,Fld(_,Var(x))))))),None,None,TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(Lam(Tup(List()),Rft(NuNew(Var(C)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Var(x))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class B$1[T]([]) {} @@ -189,8 +183,7 @@ class Child(x): ({ age: T } & { name: String}) { } //│ |#class| |Child|‹|T|,| |U|›|(|x|)|#:| |(|{| |age|#:| |T| |}| |&| |{| |name|#:| |String|}|)| |{|→|#class| |Inner|{|→|#fun| |foo| |#=| |age|←|↵|}|↵|#fun| |bar| |#=| |age|↵|#fun| |boo| |#=| |#new| |Inner|←|↵|}| //│ Parsed: {class Child‹T, U›(x,): {age: T} & {name: String} {class Inner {fun foo = age}; fun bar = age; fun boo = new Inner}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Child),List((None,TypeName(T)), (None,TypeName(U))),Some(Tup(List((None,Fld(_,Var(x)))))),None,Some(Inter(Record(List((Var(age),Field(None,TypeName(T))))),Record(List((Var(name),Field(None,TypeName(String))))))),List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(Inner),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Var(age)))))), NuFunDef(None,Var(bar),None,List(),Left(Var(age))), NuFunDef(None,Var(boo),None,List(),Left(NuNew(Var(Inner))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Child$1_Inner$2([par$Child$1, age,]) {fun foo = () => (this).age} @@ -212,8 +205,7 @@ new A(0) { } //│ |#class| |A|(|x|#:| |Int|)| |{|→|#fun| |getA|#:| |Int| |#=| |0|↵|#fun| |getA1| |#=| |1|←|↵|}|↵|#new| |A|(|0|)| |{|→|#fun| |getA| |#=| |3|↵|#fun| |getA2| |#=| |2|←|↵|}| //│ Parsed: {class A(x: Int,) {fun getA = 0 : Int; fun getA1 = 1}; (new A)(0,) { ‹fun getA = 3; fun getA2 = 2› }} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((Some(Var(x)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(Asc(IntLit(0),TypeName(Int)))), NuFunDef(None,Var(getA1),None,List(),Left(IntLit(1)))))), Rft(App(NuNew(Var(A)),Tup(List((None,Fld(_,IntLit(0)))))),TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(IntLit(3))), NuFunDef(None,Var(getA2),None,List(),Left(IntLit(2)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([x: Int,]) {fun getA = () => 0 : Int; fun getA1 = () => 1} @@ -233,8 +225,7 @@ new A(1) { } //│ |#class| |A|(|x|)| |{|→|#class| |B|(|y|)| |{| |}|←|↵|}|↵|#new| |A|(|1|)| |{|→|#fun| |getB| |#=| |#new| |B|(|2|)|{|→|#fun| |getB| |#=| |#new| |B|(|3|)|←|↵|}|←|↵|}| //│ Parsed: {class A(x,) {class B(y,) {}}; (new A)(1,) { ‹fun getB = (new B)(2,) { ‹fun getB = (new B)(3,)› }› }} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),Some(Tup(List((None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List()))))), Rft(App(NuNew(Var(A)),Tup(List((None,Fld(_,IntLit(1)))))),TypingUnit(List(NuFunDef(None,Var(getB),None,List(),Left(Rft(App(NuNew(Var(B)),Tup(List((None,Fld(_,IntLit(2)))))),TypingUnit(List(NuFunDef(None,Var(getB),None,List(),Left(App(NuNew(Var(B)),Tup(List((None,Fld(_,IntLit(3)))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2([par$A$1, y,]) {} @@ -266,8 +257,7 @@ new B{ } //│ |#class| |A| |{|→|#fun| |getA| |#=| |0|↵|#fun| |funcA| |#=| |10|←|↵|}|↵|#class| |B|#:| |A|{|→|#fun| |getA| |#=| |1|↵|#fun| |funcB| |#=| |11|←|↵|}|↵|#new| |A|↵|#new| |B|↵|#fun| |f|(|x|)| |#=| |#if| |x| |is| |A| |#then| |0| |#else| |1|↵|f|(|#new| |A|{|→|#fun| |getA| |#=| |2|←|↵|}|)|↵|#new| |B|{|→|#fun| |getA| |#=| |funcB|←|↵|}| //│ Parsed: {class A {fun getA = 0; fun funcA = 10}; class B: A {fun getA = 1; fun funcB = 11}; new A; new B; fun f = (x,) => if (is(x, A,)) then 0 else 1; f(new A { ‹fun getA = 2› },); new B { ‹fun getA = funcB› }} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(IntLit(0))), NuFunDef(None,Var(funcA),None,List(),Left(IntLit(10)))))), NuTypeDef(Cls,TypeName(B),List(),None,None,Some(TypeName(A)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(IntLit(1))), NuFunDef(None,Var(funcB),None,List(),Left(IntLit(11)))))), NuNew(Var(A)), NuNew(Var(B)), NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),If(IfThen(App(Var(is),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(A)))))),IntLit(0)),Some(IntLit(1)))))), App(Var(f),Tup(List((None,Fld(_,Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(IntLit(2))))))))))), Rft(NuNew(Var(B)),TypingUnit(List(NuFunDef(None,Var(getA),None,List(),Left(Var(funcB)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([]) {fun getA = () => 0; fun funcA = () => 10} @@ -305,8 +295,7 @@ class A{ } //│ |#class| |A|{|→|#class| |B|{|→|#fun| |funB| |#=| |1|↵|#fun| |foo| |#=| |100|←|↵|}|↵|#class| |C|#:| |B|{|→|#fun| |funC| |#=| |2|↵|#fun| |foo| |#=| |1000|←|↵|}|↵|#class| |D|{|→|#fun| |funD| |#=| |3|↵|#fun| |foo| |#=| |10000| |↵|#class| |E|#:| |C|{|→|#fun| |funE| |#=| |4|↵|#fun| |foo| |#=| |100000|←|↵|}|↵|#class| |F|#:| |E|{|→|#fun| |funF| |#=| |5|↵|#fun| |foo| |#=| |1000000|←|↵|}|←|↵|}|←|↵|}| //│ Parsed: {class A {class B {fun funB = 1; fun foo = 100}; class C: B {fun funC = 2; fun foo = 1000}; class D {fun funD = 3; fun foo = 10000; class E: C {fun funE = 4; fun foo = 100000}; class F: E {fun funF = 5; fun foo = 1000000}}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(funB),None,List(),Left(IntLit(1))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(100)))))), NuTypeDef(Cls,TypeName(C),List(),None,None,Some(TypeName(B)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(funC),None,List(),Left(IntLit(2))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(1000)))))), NuTypeDef(Cls,TypeName(D),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(funD),None,List(),Left(IntLit(3))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(10000))), NuTypeDef(Cls,TypeName(E),List(),None,None,Some(TypeName(C)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(funE),None,List(),Left(IntLit(4))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(100000)))))), NuTypeDef(Cls,TypeName(F),List(),None,None,Some(TypeName(E)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(funF),None,List(),Left(IntLit(5))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(1000000)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2([par$A$1,]) {fun funB = () => 1; fun foo = () => 100} @@ -348,8 +337,7 @@ class A{ } //│ |#class| |A|{|→|#class| |B|{|→|#fun| |funB| |#=| |1|↵|#fun| |foo| |#=| |100|←|↵|}|↵|#class| |C|#:| |B|{|→|#fun| |funC| |#=| |2|↵|#fun| |foo| |#=| |1000|↵|#fun| |getB| |#=| |#new| |B|←|↵|}|↵|#class| |D|{|→|#fun| |funD| |#=| |3|↵|#fun| |foo| |#=| |10000| |↵|#class| |E|#:| |C|{|→|#fun| |funE| |#=| |4|↵|#fun| |foo| |#=| |100000|↵|#fun| |getD| |#=| |#new| |D|←|↵|}|↵|#class| |F|#:| |E|{|→|#fun| |funF| |#=| |5|↵|#fun| |foo| |#=| |1000000|↵|#fun| |getE| |#=| |#new| |E|{|→|#fun| |foo| |#=| |0|←|↵|}|←|↵|}|←|↵|}|←|↵|}| //│ Parsed: {class A {class B {fun funB = 1; fun foo = 100}; class C: B {fun funC = 2; fun foo = 1000; fun getB = new B}; class D {fun funD = 3; fun foo = 10000; class E: C {fun funE = 4; fun foo = 100000; fun getD = new D}; class F: E {fun funF = 5; fun foo = 1000000; fun getE = new E { ‹fun foo = 0› }}}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(funB),None,List(),Left(IntLit(1))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(100)))))), NuTypeDef(Cls,TypeName(C),List(),None,None,Some(TypeName(B)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(funC),None,List(),Left(IntLit(2))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(1000))), NuFunDef(None,Var(getB),None,List(),Left(NuNew(Var(B))))))), NuTypeDef(Cls,TypeName(D),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(funD),None,List(),Left(IntLit(3))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(10000))), NuTypeDef(Cls,TypeName(E),List(),None,None,Some(TypeName(C)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(funE),None,List(),Left(IntLit(4))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(100000))), NuFunDef(None,Var(getD),None,List(),Left(NuNew(Var(D))))))), NuTypeDef(Cls,TypeName(F),List(),None,None,Some(TypeName(E)),List(),None,None,TypingUnit(List(NuFunDef(None,Var(funF),None,List(),Left(IntLit(5))), NuFunDef(None,Var(foo),None,List(),Left(IntLit(1000000))), NuFunDef(None,Var(getE),None,List(),Left(Rft(NuNew(Var(E)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(0))))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2([par$A$1,]) {fun funB = () => 1; fun foo = () => 100} @@ -383,8 +371,7 @@ class A{ new A //│ |#class| |A|{|→|#class| |B|{|→|#fun| |foo| |#=| |1|←|↵|}|↵|#fun| |bar| |#=| |#new| |B|←|↵|}|↵|#new| |A| //│ Parsed: {class A {class B {fun foo = 1}; fun bar = new B}; new A} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(1)))))), NuFunDef(None,Var(bar),None,List(),Left(NuNew(Var(B))))))), NuNew(Var(A)))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2([par$A$1,]) {fun foo = () => 1} @@ -408,8 +395,7 @@ let x = new A{ } //│ |#class| |A|(|x|)| |{|→|#fun| |foo| |#=| |0|↵|#fun| |bar| |#=| |x|←|↵|}|↵|#let| |x| |#=| |#new| |A|{|→|#fun| |foo| |#=| |1|↵|#fun| |newFun| |#=| |2|↵|#fun| |bar| |#=| |#new| |A|(|foo|)|{|→|#fun| |foo| |#=| |bar| |+| |1|↵|#fun| |bar2| |#=| |newFun| |+| |1|←|↵|}|←|↵|}| //│ Parsed: {class A(x,) {fun foo = 0; fun bar = x}; let x = new A { ‹fun foo = 1; fun newFun = 2; fun bar = (new A)(foo,) { ‹fun foo = +(bar, 1,); fun bar2 = +(newFun, 1,)› }› }} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(0))), NuFunDef(None,Var(bar),None,List(),Left(Var(x)))))), NuFunDef(Some(false),Var(x),None,List(),Left(Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(1))), NuFunDef(None,Var(newFun),None,List(),Left(IntLit(2))), NuFunDef(None,Var(bar),None,List(),Left(Rft(App(NuNew(Var(A)),Tup(List((None,Fld(_,Var(foo)))))),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,Var(bar))), (None,Fld(_,IntLit(1)))))))), NuFunDef(None,Var(bar2),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,Var(newFun))), (None,Fld(_,IntLit(1)))))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([x,]) {fun foo = () => 0; fun bar = () => (this).x} @@ -436,8 +422,7 @@ new A{ } //│ |#class| |A| |{||}|↵|#new| |A|{|→|#fun| |foo| |#=| |1|↵|#fun| |bar| |#=| |#new| |A|{|→|#fun| |foo1| |#=| |foo|↵|#fun| |bar1| |#=| |#new| |A|{|→|#fun| |foo2| |#=| |foo|↵|#fun| |bar2| |#=| |#new| |A|{|→|#fun| |foo3| |#=| |foo|↵|#fun| |bar3| |#=| |#new| |A|{|→|#fun| |foo4| |#=| |foo|↵|#fun| |bar4| |#=| |0|←|↵|}|←|↵|}|←|↵|}|←|↵|}|←|↵|}| //│ Parsed: {class A {}; new A { ‹fun foo = 1; fun bar = new A { ‹fun foo1 = foo; fun bar1 = new A { ‹fun foo2 = foo; fun bar2 = new A { ‹fun foo3 = foo; fun bar3 = new A { ‹fun foo4 = foo; fun bar4 = 0› }› }› }› }› }} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List())), Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(IntLit(1))), NuFunDef(None,Var(bar),None,List(),Left(Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(foo1),None,List(),Left(Var(foo))), NuFunDef(None,Var(bar1),None,List(),Left(Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(foo2),None,List(),Left(Var(foo))), NuFunDef(None,Var(bar2),None,List(),Left(Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(foo3),None,List(),Left(Var(foo))), NuFunDef(None,Var(bar3),None,List(),Left(Rft(NuNew(Var(A)),TypingUnit(List(NuFunDef(None,Var(foo4),None,List(),Left(Var(foo))), NuFunDef(None,Var(bar4),None,List(),Left(IntLit(0)))))))))))))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit {class A$1([]) {}; Code(List(new A$1([]) {}))} //│ diff --git a/compiler/shared/test/diff/LifterBlks.mls b/compiler/shared/test/diff/LifterBlks.mls index 826dc8a9c2..9ea8e45f02 100644 --- a/compiler/shared/test/diff/LifterBlks.mls +++ b/compiler/shared/test/diff/LifterBlks.mls @@ -6,8 +6,7 @@ fun foo = print("ko") //│ |#fun| |foo| |#=|→|print|(|"ok"|)|↵|print|(|"ko"|)|←| //│ Parsed: {fun foo = {print("ok",); print("ko",)}} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Blk(List(App(Var(print),Tup(List((None,Fld(_,StrLit(ok)))))), App(Var(print),Tup(List((None,Fld(_,StrLit(ko)))))))))))) +//│ //│ Lifted: //│ TypingUnit {fun foo$1 = () => {print("ok",); print("ko",)}} //│ @@ -18,8 +17,7 @@ class A{ } //│ |#class| |A|{|→|#class| |B| |{||}|↵|#fun| |foo|(|x|#:| |B|)| |#=| |(|x| |#:| |B|)|←|↵|}| //│ Parsed: {class A {class B {}; fun foo = (x: B,) => '(' x : B ')'}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List())), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(x)),Fld(_,Var(B))))),Bra(false,Asc(Var(x),TypeName(B))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2([par$A$1,]) {} @@ -40,8 +38,7 @@ fun foo = fun tmp = 2 //│ |#fun| |foo| |#=|→|#let| |local|(|x|)| |#=|→|#class| |Foo| |{|→|#fun| |bar| |#=| |x| |+| |1|←|↵|}|↵|Foo|(||)|.bar|←|↵|print| |#of| |local|(|0|)| |+| |local|(|1|)|↵|print| |#of| |(|local| |#of| |0|)| |+| |local| |#of| |1|↵|#fun| |tmp| |#=| |1|↵|print| |#of| |local| |#of| |0| |+| |local| |#of| |1|↵|#fun| |tmp| |#=| |2|←| //│ Parsed: {fun foo = {let local = (x,) => {class Foo {fun bar = +(x, 1,)}; (Foo()).bar}; print(+(local(0,), local(1,),),); print(+('(' local(0,) ')', local(1,),),); fun tmp = 1; print(local(+(0, local(1,),),),); fun tmp = 2}} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Blk(List(NuFunDef(Some(false),Var(local),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuTypeDef(Cls,TypeName(Foo),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1))))))))))), Sel(App(Var(Foo),Tup(List())),Var(bar))))))), App(Var(print),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,App(Var(local),Tup(List((None,Fld(_,IntLit(0)))))))), (None,Fld(_,App(Var(local),Tup(List((None,Fld(_,IntLit(1)))))))))))))))), App(Var(print),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Bra(false,App(Var(local),Tup(List((None,Fld(_,IntLit(0))))))))), (None,Fld(_,App(Var(local),Tup(List((None,Fld(_,IntLit(1)))))))))))))))), NuFunDef(None,Var(tmp),None,List(),Left(IntLit(1))), App(Var(print),Tup(List((None,Fld(_,App(Var(local),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,IntLit(0))), (None,Fld(_,App(Var(local),Tup(List((None,Fld(_,IntLit(1))))))))))))))))))))), NuFunDef(None,Var(tmp),None,List(),Left(IntLit(2))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([x,]) {fun bar = () => +((this).x, 1,)} @@ -56,8 +53,7 @@ let f = x => new A(0){fun bar = x+y} f(0) //│ |#class| |A|(|y|)|{||}|↵|#let| |f| |#=| |x| |#=>| |#new| |A|(|0|)|{|#fun| |bar| |#=| |x|+|y|}|↵|f|(|0|)| //│ Parsed: {class A(y,) {}; let f = (x,) => (new A)(0,) { ‹fun bar = +(x, y,)› }; f(0,)} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List())), NuFunDef(Some(false),Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Rft(App(NuNew(Var(A)),Tup(List((None,Fld(_,IntLit(0)))))),TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))))))))))), App(Var(f),Tup(List((None,Fld(_,IntLit(0)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([y,]) {} @@ -79,8 +75,7 @@ class A(x){ } //│ |#class| |A|(|x|)|{|→|#fun| |w| |#=| |x|↵|#fun| |foo|(|y|)| |#=| |→|#class| |B|(|z|)|{|→|#fun| |bar| |#=| |x|+|y|+|z|←|↵|}|↵|#new| |B|(|0|)|{|→|#fun| |bar| |#=| |w|+|y|+|z|←|↵|}|←|←|↵|}| //│ Parsed: {class A(x,) {fun w = x; fun foo = (y,) => {class B(z,) {fun bar = +(+(x, y,), z,)}; (new B)(0,) { ‹fun bar = +(+(w, y,), z,)› }}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(w),None,List(),Left(Var(x))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(y))))),Blk(List(NuTypeDef(Cls,TypeName(B),List(),Some(Tup(List((None,Fld(_,Var(z)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))))), (None,Fld(_,Var(z))))))))))), Rft(App(NuNew(Var(B)),Tup(List((None,Fld(_,IntLit(0)))))),TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(w))), (None,Fld(_,Var(y)))))))), (None,Fld(_,Var(z))))))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2([par$A$1, z, y,]) { @@ -110,8 +105,7 @@ fun f(x,y,z) = } //│ |#fun| |f|(|x|,|y|,|z|)| |#=| |→|#class| |A|{|→|#fun| |foo| |#=| |#new| |B|↵|#fun| |bar1| |#=| |x|←|↵|}|↵|#class| |B|{|→|#fun| |foo| |#=| |#new| |A|↵|#fun| |bar2| |#=| |y|←|↵|}|↵|#class| |C| |#extends| |A|,| |B| |{|→|#fun| |bar| |#=| |bar1| |+| |bar2|←|↵|}|←| //│ Parsed: {fun f = (x, y, z,) => {class A {fun foo = new B; fun bar1 = x}; class B {fun foo = new A; fun bar2 = y}; class C: A, B {fun bar = +(bar1, bar2,)}}} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y))), (None,Fld(_,Var(z))))),Blk(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(NuNew(Var(B)))), NuFunDef(None,Var(bar1),None,List(),Left(Var(x)))))), NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(NuNew(Var(A)))), NuFunDef(None,Var(bar2),None,List(),Left(Var(y)))))), NuTypeDef(Cls,TypeName(C),List(),None,None,None,List(Var(A), Var(B)),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,Var(bar1))), (None,Fld(_,Var(bar2)))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([x, y,]) { @@ -141,8 +135,7 @@ fun f(x,y,z) = } //│ |#fun| |f|(|x|,|y|,|z|)| |#=| |→|#class| |C|{|→|#class| |A|{|→|#fun| |foo| |#=| |#new| |B|↵|#fun| |bar1| |#=| |x|←|↵|}|↵|#class| |B|{|→|#fun| |foo| |#=| |#new| |A|↵|#fun| |bar2| |#=| |y|←|↵|}|↵|#fun| |boo| |#=| |(|#new| |A|)|.bar1| |+| |B|(||)|.bar2| |+| |z|←|↵|}|←| //│ Parsed: {fun f = (x, y, z,) => {class C {class A {fun foo = new B; fun bar1 = x}; class B {fun foo = new A; fun bar2 = y}; fun boo = +(+(('(' new A ')').bar1, (B()).bar2,), z,)}}} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y))), (None,Fld(_,Var(z))))),Blk(List(NuTypeDef(Cls,TypeName(C),List(),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(NuNew(Var(B)))), NuFunDef(None,Var(bar1),None,List(),Left(Var(x)))))), NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(NuNew(Var(A)))), NuFunDef(None,Var(bar2),None,List(),Left(Var(y)))))), NuFunDef(None,Var(boo),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Sel(Bra(false,NuNew(Var(A))),Var(bar1)))), (None,Fld(_,Sel(App(Var(B),Tup(List())),Var(bar2))))))))), (None,Fld(_,Var(z)))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class C$1_A$2([par$C$1,]) { @@ -167,8 +160,7 @@ fun f(y) = } //│ |#fun| |f|(|y|)| |#=|→|#let| |g|(|x|)| |#=| |x| |+| |y| |+| |1|↵|#class| |Foo|(|x|)| |{|→|#fun| |h| |#=| |g|(|x|)|←|↵|}|←| //│ Parsed: {fun f = (y,) => {let g = (x,) => +(+(x, y,), 1,); class Foo(x,) {fun h = g(x,)}}} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(y))))),Blk(List(NuFunDef(Some(false),Var(g),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))))), (None,Fld(_,IntLit(1))))))))), NuTypeDef(Cls,TypeName(Foo),List(),Some(Tup(List((None,Fld(_,Var(x)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(h),None,List(),Left(App(Var(g),Tup(List((None,Fld(_,Var(x)))))))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([x, y,]) {fun h = () => g$2((this).x, y,)} @@ -179,16 +171,14 @@ fun f(y) = Foo(1).h //│ | |Foo|(|1|)|.h| //│ Parsed: {(Foo(1,)).h} -//│ Parsed: -//│ TypingUnit(List(Sel(App(Var(Foo),Tup(List((None,Fld(_,IntLit(1)))))),Var(h)))) +//│ //│ Lifted: //│ TypingUnit {Code(List((Foo(1,)).h))} //│ Foo(x).h //│ | |Foo|(|x|)|.h| //│ Parsed: {(Foo(x,)).h} -//│ Parsed: -//│ TypingUnit(List(Sel(App(Var(Foo),Tup(List((None,Fld(_,Var(x)))))),Var(h)))) +//│ //│ Lifted: //│ TypingUnit {Code(List((Foo(x,)).h))} //│ @@ -203,8 +193,7 @@ fun f(x) = Foo(x, x).bar //│ |#fun| |f|(|x|)| |#=|→|#let| |g|(|x|)| |#=| |→|#let| |h|(|x|)| |#=| |x| |+| |2|↵|Foo|(|h|(|x|)|,| |x|)|.bar|←|↵|#class| |Foo|(|x|,| |y|)| |{|→|#fun| |bar| |#=| |g|(|x|)|+|y|←|↵|}|↵|Foo|(|x|,| |x|)|.bar|←| //│ Parsed: {fun f = (x,) => {let g = (x,) => {let h = (x,) => +(x, 2,); (Foo(h(x,), x,)).bar}; class Foo(x, y,) {fun bar = +(g(x,), y,)}; (Foo(x, x,)).bar}} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuFunDef(Some(false),Var(g),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuFunDef(Some(false),Var(h),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(2))))))))), Sel(App(Var(Foo),Tup(List((None,Fld(_,App(Var(h),Tup(List((None,Fld(_,Var(x)))))))), (None,Fld(_,Var(x)))))),Var(bar))))))), NuTypeDef(Cls,TypeName(Foo),List(),Some(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,App(Var(g),Tup(List((None,Fld(_,Var(x)))))))), (None,Fld(_,Var(y))))))))))), Sel(App(Var(Foo),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(x)))))),Var(bar))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([x, y,]) {fun bar = () => +(g$2((this).x,), (this).y,)} @@ -217,8 +206,7 @@ fun f(x) = class Foo(x, y) extends Bar(y, x), Baz(x + y) //│ |#class| |Foo|(|x|,| |y|)| |#extends| |Bar|(|y|,| |x|)|,| |Baz|(|x| |+| |y|)| //│ Parsed: {class Foo(x, y,): Bar(y, x,), Baz(+(x, y,),) {}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Foo),List(),Some(Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))),None,None,List(App(Var(Bar),Tup(List((None,Fld(_,Var(y))), (None,Fld(_,Var(x)))))), App(Var(Baz),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y)))))))))))),None,None,TypingUnit(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([x, y,]): Bar((this).y, (this).x,), Baz(+((this).x, (this).y,),) {} @@ -232,8 +220,7 @@ fun foo(x: T): string = "rua" //│ |#fun| |foo|‹|T|,| |U|›|(|x|#:| |T|)|#:| |string| |#=| |→|#class| |A|(|y|)| |#extends| |B|‹|T|›|,| |C|(|y|#:| |U|)| |{|→|#fun| |bar| |#=| |this|←|↵|}|↵|"rua"|←| //│ Parsed: {fun foo = (x: T,) => {class A(y,): B‹T›, C(y: U,) {fun bar = this}; "rua"} : string} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(TypeName(T), TypeName(U)),Left(Lam(Tup(List((Some(Var(x)),Fld(_,Var(T))))),Asc(Blk(List(NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((None,Fld(_,Var(y)))))),None,None,List(TyApp(Var(B),List(TypeName(T))), App(Var(C),Tup(List((Some(Var(y)),Fld(_,Var(U))))))),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(Var(this)))))), StrLit(rua))),TypeName(string))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1[T,U]([y,]): B‹T›, C(y: U,) {fun bar = () => this} @@ -249,8 +236,7 @@ class A{ } //│ |#class| |A|‹|T|›|{|→|#class| |B|{|→|#fun| |f| |#=| |x| |#=>| |y| |#=>| |x|↵|#fun| |g|#:| |T| |#=>| |B| |#=>| |T|←|↵|}|←|↵|}| //│ Parsed: {class A‹T› {class B {fun f = (x,) => (y,) => x; fun g: T -> B -> T}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List((None,TypeName(T))),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(B),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Lam(Tup(List((None,Fld(_,Var(y))))),Var(x))))), NuFunDef(None,Var(g),None,List(),Right(PolyType(List(),Function(Tuple(List((None,Field(None,TypeName(T))))),Function(Tuple(List((None,Field(None,TypeName(B))))),TypeName(T)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1_B$2_Lambda1$1$3([par$A$1_B$2, x,]) {fun apply = (y,) => (this).x} @@ -269,8 +255,7 @@ class Foo{ } //│ |#class| |Foo|‹|T|›|{|→|#class| |RectangleBox|#:| |Box|‹|T|›| |&| |{| |breadth|#:| |T| |}|↵|#class| |StackedRectangleBoxes|‹|N|›| |#:| |RectangleBox|‹|T|›| |&| |{| |size|#:| |N| |}|↵|#class| |Bar|#:| |{|any|#:| |RectangleBox| |#=>| |StackedRectangleBoxes|}|←|↵|}| //│ Parsed: {class Foo‹T› {class RectangleBox: Box[T] & {breadth: T} {}; class StackedRectangleBoxes‹N›: RectangleBox[T] & {size: N} {}; class Bar: {any: RectangleBox -> StackedRectangleBoxes} {}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Foo),List((None,TypeName(T))),None,None,None,List(),None,None,TypingUnit(List(NuTypeDef(Cls,TypeName(RectangleBox),List(),None,None,Some(Inter(AppliedType(TypeName(Box),List(TypeName(T))),Record(List((Var(breadth),Field(None,TypeName(T))))))),List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(StackedRectangleBoxes),List((None,TypeName(N))),None,None,Some(Inter(AppliedType(TypeName(RectangleBox),List(TypeName(T))),Record(List((Var(size),Field(None,TypeName(N))))))),List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(Bar),List(),None,None,Some(Record(List((Var(any),Field(None,Function(Tuple(List((None,Field(None,TypeName(RectangleBox))))),TypeName(StackedRectangleBoxes))))))),List(),None,None,TypingUnit(List()))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1_RectangleBox$2([par$Foo$1,]) {} @@ -292,8 +277,7 @@ fun ctx(a,b) = }, b) //│ |#class| |Func|‹|T|,| |U|›| |{|→|#fun| |apply|#:| |T| |#=>| |U|←|↵|}|↵|#class| |Lambda|‹|T|,| |U|›| |#:| |Func|‹|T|,| |U|›| |{||}|↵|#fun| |ctx|(|a|,|b|)| |#=|→|#fun| |foo|(|f|#:| |Func|,| |x|)| |#=| |→|f|.apply|(|x|)|←|↵|foo|(|#new| |Lambda|{|→|#fun| |apply|(|x|)| |#=| |a|+|x|←|↵|}|,| |b|)|←| //│ Parsed: {class Func‹T, U› {fun apply: T -> U}; class Lambda‹T, U›: Func[T, U] {}; fun ctx = (a, b,) => {fun foo = (f: Func, x,) => {(f).apply(x,)}; foo(new Lambda { ‹fun apply = (x,) => +(a, x,)› }, b,)}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Func),List((None,TypeName(T)), (None,TypeName(U))),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(apply),None,List(),Right(PolyType(List(),Function(Tuple(List((None,Field(None,TypeName(T))))),TypeName(U)))))))), NuTypeDef(Cls,TypeName(Lambda),List((None,TypeName(T)), (None,TypeName(U))),None,None,Some(AppliedType(TypeName(Func),List(TypeName(T), TypeName(U)))),List(),None,None,TypingUnit(List())), NuFunDef(None,Var(ctx),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(a))), (None,Fld(_,Var(b))))),Blk(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((Some(Var(f)),Fld(_,Var(Func))), (None,Fld(_,Var(x))))),Blk(List(App(Sel(Var(f),Var(apply)),Tup(List((None,Fld(_,Var(x))))))))))), App(Var(foo),Tup(List((None,Fld(_,Rft(NuNew(Var(Lambda)),TypingUnit(List(NuFunDef(None,Var(apply),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(a))), (None,Fld(_,Var(x)))))))))))))), (None,Fld(_,Var(b))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Func$1[T,U]([]) {fun apply = T -> U} @@ -308,8 +292,7 @@ fun f(T) = f(MyClass) //│ |#fun| |f|(|T|)| |#=| |→|#new| |T|(||)|←|↵|f|(|MyClass|)| //│ Parsed: {fun f = (T,) => {(new T)()}; f(MyClass,)} -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(T))))),Blk(List(App(NuNew(Var(T)),Tup(List()))))))), App(Var(f),Tup(List((None,Fld(_,Var(MyClass)))))))) +//│ //│ Lifted: //│ Lifting failed: mlscript.codegen.CodeGenError: Cannot find type T. Class values are not supported in lifter. //│ @@ -321,8 +304,7 @@ class A { } //│ |#class| |A| |{|→|#fun| |foo| |#=| |→|#fun| |bar| |#=| |foo|(||)|↵|bar|(||)|←|←|↵|}| //│ Parsed: {class A {fun foo = {fun bar = foo(); bar()}}} -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(A),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Blk(List(NuFunDef(None,Var(bar),None,List(),Left(App(Var(foo),Tup(List())))), App(Var(bar),Tup(List()))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class A$1([]) {fun foo = () => {bar$1(this,)}} diff --git a/compiler/shared/test/diff/mono.mls b/compiler/shared/test/diff/mono.mls index ef39b7e12d..a261d75d03 100644 --- a/compiler/shared/test/diff/mono.mls +++ b/compiler/shared/test/diff/mono.mls @@ -3,8 +3,7 @@ :mono fun f(x: Int) = if x then 42 else 1337 -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((Some(Var(x)),Fld(_,Var(Int))))),If(IfThen(Var(x),IntLit(42)),Some(IntLit(1337)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ fun f$1 = (x: Int,) => if (x) then 42 else 1337 @@ -18,8 +17,7 @@ fun f(x: Int) = if x then 42 else 1337 :mono fun foo() = 42 -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List()),IntLit(42)))))) +//│ //│ Lifted: //│ TypingUnit {fun foo$1 = () => 42} //│ Mono: @@ -33,8 +31,7 @@ fun foo() = 42 fun foo(x, #b) = if b then x else 1337 let a = foo(42, true) let b = foo(23, false) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))), (None,Fld(s,Var(b))))),If(IfThen(Var(b),Var(x)),Some(IntLit(1337)))))), NuFunDef(Some(false),Var(a),None,List(),Left(App(Var(foo),Tup(List((None,Fld(_,IntLit(42))), (None,Fld(_,Var(true)))))))), NuFunDef(Some(false),Var(b),None,List(),Left(App(Var(foo),Tup(List((None,Fld(_,IntLit(23))), (None,Fld(_,Var(false)))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ fun foo$3 = (x, #b,) => if (b) then x else 1337 @@ -60,8 +57,7 @@ let b = foo(23, false) :mono let x = 42 + 1337 -//│ Parsed: -//│ TypingUnit(List(NuFunDef(Some(false),Var(x),None,List(),Left(App(Var(+),Tup(List((None,Fld(_,IntLit(42))), (None,Fld(_,IntLit(1337)))))))))) +//│ //│ Lifted: //│ TypingUnit {let x$1 = () => +(42, 1337,)} //│ Mono: @@ -98,8 +94,7 @@ let x = 42 + 1337 :mono if true then 1 else 0 if 1+1 > 1 then 1 - 1 else 1*1 -//│ Parsed: -//│ TypingUnit(List(If(IfThen(Var(true),IntLit(1)),Some(IntLit(0))), If(IfThen(App(Var(>),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,IntLit(1)))))))), (None,Fld(_,IntLit(1)))))),App(Var(-),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,IntLit(1))))))),Some(App(Var(*),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,IntLit(1)))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ Code(List(if (true) then 1 else 0)) @@ -122,8 +117,7 @@ if 1+1 > 1 then 1 - 1 else 1*1 :mono if(b) then 1 else 2 -//│ Parsed: -//│ TypingUnit(List(If(IfThen(Bra(false,Var(b)),IntLit(1)),Some(IntLit(2))))) +//│ //│ Lifted: //│ TypingUnit {Code(List(if ('(' b ')') then 1 else 2))} //│ Mono: @@ -138,8 +132,7 @@ if(b) then 1 else 2 :mono ((f, g) => f(g))(f => f, true) -//│ Parsed: -//│ TypingUnit(List(App(Bra(false,Lam(Tup(List((None,Fld(_,Var(f))), (None,Fld(_,Var(g))))),App(Var(f),Tup(List((None,Fld(_,Var(g)))))))),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(f))))),Var(f)))), (None,Fld(_,Var(true)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Lambda2$1$1([]) {fun apply = (f, g,) => f(g,)} @@ -167,8 +160,7 @@ if(b) then 1 else 2 :mono (b => if b then true else false) (true) -//│ Parsed: -//│ TypingUnit(List(App(Bra(false,Lam(Tup(List((None,Fld(_,Var(b))))),If(IfThen(Var(b),Var(true)),Some(Var(false))))),Tup(List((None,Fld(_,Var(true)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Lambda1$1$1([]) {fun apply = (b,) => if (b) then true else false} @@ -192,8 +184,7 @@ if(b) then 1 else 2 fun f(x) = if(x > 0) then x+1 else x - 1 f(2)+3 -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(If(IfThen(Bra(false,App(Var(>),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(0))))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1))))))),Some(App(Var(-),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1))))))))))))), App(Var(+),Tup(List((None,Fld(_,App(Var(f),Tup(List((None,Fld(_,IntLit(2)))))))), (None,Fld(_,IntLit(3)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ fun f$1 = (x,) => {if ('(' >(x, 0,) ')') then +(x, 1,) else -(x, 1,)} @@ -216,8 +207,7 @@ f(2)+3 fun fac(n) = if (n > 1) then fac(n - 1) * n else 1 fac(2) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(fac),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(n))))),Blk(List(If(IfThen(Bra(false,App(Var(>),Tup(List((None,Fld(_,Var(n))), (None,Fld(_,IntLit(1))))))),App(Var(*),Tup(List((None,Fld(_,App(Var(fac),Tup(List((None,Fld(_,App(Var(-),Tup(List((None,Fld(_,Var(n))), (None,Fld(_,IntLit(1))))))))))))), (None,Fld(_,Var(n))))))),Some(IntLit(1)))))))), App(Var(fac),Tup(List((None,Fld(_,IntLit(2)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ fun fac$1 = (n,) => {if ('(' >(n, 1,) ')') then *(fac$1(-(n, 1,),), n,) else 1} @@ -245,8 +235,7 @@ fun count(lst) = if l is undefined then 1 else count(l)+1 else 0 count(new List(new List(new Nil(undefined, false), true), true)) -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(List),List(),Some(Tup(List((Some(Var(l)),Fld(g,App(Var(|),Tup(List((None,Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(List))), (None,Fld(_,Var(Nil)))))))), (None,Fld(_,UnitLit(true)))))))), (Some(Var(hasTail)),Fld(g,Var(Bool)))))),None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(Nil),List(),Some(Tup(List((Some(Var(l)),Fld(g,App(Var(|),Tup(List((None,Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(List))), (None,Fld(_,Var(Nil)))))))), (None,Fld(_,UnitLit(true)))))))), (Some(Var(hasTail)),Fld(g,Var(Bool)))))),None,None,List(),None,None,TypingUnit(List())), NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(lst))))),Blk(List(If(IfThen(Sel(Var(lst),Var(hasTail)),Blk(List(NuFunDef(Some(false),Var(l),None,List(),Left(Sel(Var(lst),Var(l)))), If(IfThen(App(Var(is),Tup(List((None,Fld(_,Var(l))), (None,Fld(_,UnitLit(true)))))),IntLit(1)),Some(App(Var(+),Tup(List((None,Fld(_,App(Var(count),Tup(List((None,Fld(_,Var(l)))))))), (None,Fld(_,IntLit(1))))))))))),Some(IntLit(0)))))))), App(Var(count),Tup(List((None,Fld(_,App(NuNew(Var(List)),Tup(List((None,Fld(_,App(NuNew(Var(List)),Tup(List((None,Fld(_,App(NuNew(Var(Nil)),Tup(List((None,Fld(_,UnitLit(true))), (None,Fld(_,Var(false)))))))), (None,Fld(_,Var(true)))))))), (None,Fld(_,Var(true))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class List$1([val l: |(|(List, Nil,), undefined,), val hasTail: Bool,]) {} @@ -302,8 +291,7 @@ class Nil() { } fun add2(x) = x+2 (new List(1, new List(2, new Nil()))).map(x => x+1).map(x => add2(x)) -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(List),List(),Some(Tup(List((Some(Var(e)),Fld(_,Var(Int))), (Some(Var(tail)),Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(List))), (None,Fld(_,Var(Nil))))))))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(map),None,List(),Right(PolyType(List(),Function(Tuple(List((None,Field(None,Function(Tuple(List((None,Field(None,TypeName(Int))))),TypeName(Int)))))),TypeName(List))))), NuFunDef(None,Var(map),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(f))))),App(NuNew(Var(List)),Tup(List((None,Fld(_,App(Var(f),Tup(List((None,Fld(_,Var(e)))))))), (None,Fld(_,App(Sel(Var(tail),Var(map)),Tup(List((None,Fld(_,Var(f)))))))))))))), NuFunDef(None,Var(count),None,List(),Right(PolyType(List(),Function(Tuple(List()),TypeName(Int))))), NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),App(Var(+),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(Sel(Var(tail),Var(count)),Tup(List()))))))))))))), NuTypeDef(Cls,TypeName(Nil),List(),Some(Tup(List())),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(map),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(f))))),Var(this)))), NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),IntLit(0))))))), NuFunDef(None,Var(add2),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(2))))))))), App(Sel(App(Sel(Bra(false,App(NuNew(Var(List)),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(NuNew(Var(List)),Tup(List((None,Fld(_,IntLit(2))), (None,Fld(_,App(NuNew(Var(Nil)),Tup(List()))))))))))))),Var(map)),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1)))))))))))),Var(map)),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(add2),Tup(List((None,Fld(_,Var(x)))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class List$1([e: Int, tail: |(List, Nil,),]) { @@ -369,8 +357,7 @@ fun generate(x) = if x > 0 then new List(x, generate(x+1)) else new Nil() foo(new List(1, new List(2, new Nil()))) foo(generate(1)) -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(List),List(),Some(Tup(List((Some(Var(e)),Fld(_,Var(Int))), (Some(Var(tail)),Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(List))), (None,Fld(_,Var(Nil))))))))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(count),None,List(),Right(PolyType(List(),Function(Tuple(List()),TypeName(Int))))), NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),App(Var(+),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(Sel(Var(tail),Var(count)),Tup(List()))))))))))))), NuTypeDef(Cls,TypeName(Nil),List(),Some(Tup(List())),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),IntLit(0))))))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),App(Sel(Var(x),Var(count)),Tup(List()))))), NuFunDef(None,Var(generate),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(If(IfThen(App(Var(>),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(0)))))),App(NuNew(Var(List)),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,App(Var(generate),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1))))))))))))))))),Some(App(NuNew(Var(Nil)),Tup(List()))))))))), App(Var(foo),Tup(List((None,Fld(_,App(NuNew(Var(List)),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(NuNew(Var(List)),Tup(List((None,Fld(_,IntLit(2))), (None,Fld(_,App(NuNew(Var(Nil)),Tup(List()))))))))))))))))), App(Var(foo),Tup(List((None,Fld(_,App(Var(generate),Tup(List((None,Fld(_,IntLit(1))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class List$1([e: Int, tail: |(List, Nil,),]) { @@ -423,8 +410,7 @@ foo(generate(1)) fun foo(x) = (f => f(x))(z => z+1) foo(2) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(App(Bra(false,Lam(Tup(List((None,Fld(_,Var(f))))),App(Var(f),Tup(List((None,Fld(_,Var(x)))))))),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(z))))),App(Var(+),Tup(List((None,Fld(_,Var(z))), (None,Fld(_,IntLit(1))))))))))))))))), App(Var(foo),Tup(List((None,Fld(_,IntLit(2)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Lambda1$2$1([x,]) {fun apply = (f,) => f((this).x,)} @@ -457,8 +443,7 @@ foo(2) fun f(x) = (y => f(x+y))(x+1) f(1) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(App(Bra(false,Lam(Tup(List((None,Fld(_,Var(y))))),App(Var(f),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y))))))))))))),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1)))))))))))))))), App(Var(f),Tup(List((None,Fld(_,IntLit(1)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Lambda1$2$1([x,]) {fun apply = (y,) => f$1(+((this).x, y,),)} @@ -488,8 +473,7 @@ f(1) fun f(x) = f(x) f(0) f(1) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(f),Tup(List((None,Fld(_,Var(x))))))))), App(Var(f),Tup(List((None,Fld(_,IntLit(0)))))), App(Var(f),Tup(List((None,Fld(_,IntLit(1)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ fun f$1 = (x,) => f$1(x,) @@ -536,8 +520,7 @@ fun foo(x) = x.apply(new Cons(1, new Nil())) + x.apply(new Nil()) foo(new Lambda()) foo(new Lambda2(2)) -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Cons),List(),Some(Tup(List((Some(Var(e)),Fld(_,Var('A))), (Some(Var(tail)),Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(Cons))), (None,Fld(_,Var(Nil))))))))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(count),None,List(),Right(PolyType(List(),Function(Tuple(List()),TypeName(Int))))), NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),App(Var(+),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(Sel(Var(tail),Var(count)),Tup(List()))))))))))))), NuTypeDef(Cls,TypeName(Nil),List(),Some(Tup(List())),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),IntLit(0))))))), NuTypeDef(Cls,TypeName(Lambda),List(),Some(Tup(List())),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(apply),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(l))))),Blk(List(App(Sel(Var(l),Var(count)),Tup(List())))))))))), NuTypeDef(Cls,TypeName(Lambda2),List(),Some(Tup(List((Some(Var(a)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(apply),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(l))))),Blk(List(App(Sel(Bra(false,App(NuNew(Var(Cons)),Tup(List((None,Fld(_,Var(a))), (None,Fld(_,Var(l))))))),Var(count)),Tup(List())))))))))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(App(Var(+),Tup(List((None,Fld(_,App(Sel(Var(x),Var(apply)),Tup(List((None,Fld(_,App(NuNew(Var(Cons)),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(NuNew(Var(Nil)),Tup(List())))))))))))))), (None,Fld(_,App(Sel(Var(x),Var(apply)),Tup(List((None,Fld(_,App(NuNew(Var(Nil)),Tup(List()))))))))))))))))), App(Var(foo),Tup(List((None,Fld(_,App(NuNew(Var(Lambda)),Tup(List()))))))), App(Var(foo),Tup(List((None,Fld(_,App(NuNew(Var(Lambda2)),Tup(List((None,Fld(_,IntLit(2))))))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Cons$1([e: 'A, tail: |(Cons, Nil,),]) { @@ -611,8 +594,7 @@ fun foo(x) = x(new Cons(1, new Nil())) + x(new Nil()) foo(l => l.count()) foo(l => (new Cons(2, l)).count()) -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Cons),List(),Some(Tup(List((Some(Var(e)),Fld(_,Var(Int))), (Some(Var(tail)),Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(Cons))), (None,Fld(_,Var(Nil))))))))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(count),None,List(),Right(PolyType(List(),Function(Tuple(List()),TypeName(Int))))), NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),App(Var(+),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(Sel(Var(tail),Var(count)),Tup(List()))))))))))))), NuTypeDef(Cls,TypeName(Nil),List(),Some(Tup(List())),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(count),None,List(),Left(Lam(Tup(List()),IntLit(0))))))), NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(App(Var(+),Tup(List((None,Fld(_,App(Var(x),Tup(List((None,Fld(_,App(NuNew(Var(Cons)),Tup(List((None,Fld(_,IntLit(1))), (None,Fld(_,App(NuNew(Var(Nil)),Tup(List())))))))))))))), (None,Fld(_,App(Var(x),Tup(List((None,Fld(_,App(NuNew(Var(Nil)),Tup(List()))))))))))))))))), App(Var(foo),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(l))))),App(Sel(Var(l),Var(count)),Tup(List())))))))), App(Var(foo),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(l))))),App(Sel(Bra(false,App(NuNew(Var(Cons)),Tup(List((None,Fld(_,IntLit(2))), (None,Fld(_,Var(l))))))),Var(count)),Tup(List())))))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Cons$1([e: Int, tail: |(Cons, Nil,),]) { @@ -706,8 +688,7 @@ class C(e1: Exp, e2: Exp) extends Exp { e1.isEmpty() && e2.isEmpty() } (new C(new Ch(1), new A(new Ch(2), new Ch(3)))).derive(0).isEmpty() -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Exp),List(),Some(Tup(List())),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(derive),None,List(),Right(PolyType(List(),Function(Tuple(List((Some(Var(x)),Field(None,TypeName(Int))))),TypeName(Exp))))), NuFunDef(None,Var(derive),None,List(),Left(Lam(Tup(List((Some(Var(x)),Fld(_,Var(Int))))),App(Var(Exp),Tup(List()))))), NuFunDef(None,Var(isEmpty),None,List(),Right(PolyType(List(),Function(Tuple(List()),TypeName(Bool))))), NuFunDef(None,Var(isEmpty),None,List(),Left(Lam(Tup(List()),Var(false))))))), NuTypeDef(Cls,TypeName(E),List(),Some(Tup(List())),None,None,List(Var(Exp)),None,None,TypingUnit(List(NuFunDef(None,Var(derive),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuNew(Var(E))))))), NuFunDef(None,Var(isEmpty),None,List(),Left(Lam(Tup(List()),Blk(List(Var(false))))))))), NuTypeDef(Cls,TypeName(Ep),List(),Some(Tup(List())),None,None,List(Var(Exp)),None,None,TypingUnit(List(NuFunDef(None,Var(derive),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(NuNew(Var(E))))))), NuFunDef(None,Var(isEmpty),None,List(),Left(Lam(Tup(List()),Blk(List(Var(true))))))))), NuTypeDef(Cls,TypeName(Ch),List(),Some(Tup(List((Some(Var(i)),Fld(_,Var(Int)))))),None,None,List(Var(Exp)),None,None,TypingUnit(List(NuFunDef(None,Var(derive),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(If(IfThen(App(Var(==),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(i)))))),NuNew(Var(Ep))),Some(NuNew(Var(E))))))))), NuFunDef(None,Var(isEmpty),None,List(),Left(Lam(Tup(List()),Blk(List(Var(false))))))))), NuTypeDef(Cls,TypeName(A),List(),Some(Tup(List((Some(Var(e1)),Fld(_,Var(Exp))), (Some(Var(e2)),Fld(_,Var(Exp)))))),None,None,List(Var(Exp)),None,None,TypingUnit(List(NuFunDef(None,Var(derive),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(App(NuNew(Var(A)),Tup(List((None,Fld(_,App(Sel(Var(e1),Var(derive)),Tup(List((None,Fld(_,Var(x)))))))), (None,Fld(_,App(Sel(Var(e2),Var(derive)),Tup(List((None,Fld(_,Var(x)))))))))))))))), NuFunDef(None,Var(isEmpty),None,List(),Left(Lam(Tup(List()),Blk(List(App(Var(||),Tup(List((None,Fld(_,App(Sel(Var(e1),Var(isEmpty)),Tup(List())))), (None,Fld(_,App(Sel(Var(e2),Var(isEmpty)),Tup(List()))))))))))))))), NuTypeDef(Cls,TypeName(C),List(),Some(Tup(List((Some(Var(e1)),Fld(_,Var(Exp))), (Some(Var(e2)),Fld(_,Var(Exp)))))),None,None,List(Var(Exp)),None,None,TypingUnit(List(NuFunDef(None,Var(derive),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(If(IfThen(App(Sel(Var(e1),Var(isEmpty)),Tup(List())),App(NuNew(Var(A)),Tup(List((None,Fld(_,App(NuNew(Var(C)),Tup(List((None,Fld(_,App(Sel(Var(e1),Var(derive)),Tup(List((None,Fld(_,Var(x)))))))), (None,Fld(_,Var(e2)))))))), (None,Fld(_,App(Sel(Var(e2),Var(derive)),Tup(List((None,Fld(_,Var(x)))))))))))),Some(App(NuNew(Var(C)),Tup(List((None,Fld(_,App(Sel(Var(e1),Var(derive)),Tup(List((None,Fld(_,Var(x)))))))), (None,Fld(_,Var(e2))))))))))))), NuFunDef(None,Var(isEmpty),None,List(),Left(Lam(Tup(List()),Blk(List(App(Var(&&),Tup(List((None,Fld(_,App(Sel(Var(e1),Var(isEmpty)),Tup(List())))), (None,Fld(_,App(Sel(Var(e2),Var(isEmpty)),Tup(List()))))))))))))))), App(Sel(App(Sel(Bra(false,App(NuNew(Var(C)),Tup(List((None,Fld(_,App(NuNew(Var(Ch)),Tup(List((None,Fld(_,IntLit(1)))))))), (None,Fld(_,App(NuNew(Var(A)),Tup(List((None,Fld(_,App(NuNew(Var(Ch)),Tup(List((None,Fld(_,IntLit(2)))))))), (None,Fld(_,App(NuNew(Var(Ch)),Tup(List((None,Fld(_,IntLit(3))))))))))))))))),Var(derive)),Tup(List((None,Fld(_,IntLit(0)))))),Var(isEmpty)),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class Exp$1([]) { @@ -808,8 +789,7 @@ class Nil(hasTail: Bool) {} fun gen() = if anyUnknown then new List(gen(), true) else new Nil(false) gen() -//│ Parsed: -//│ TypingUnit(List(NuFunDef(Some(false),Var(anyUnknown),None,List(),Left(Var(false))), NuTypeDef(Cls,TypeName(List),List(),Some(Tup(List((Some(Var(l)),Fld(_,App(Var(|),Tup(List((None,Fld(_,Var(List))), (None,Fld(_,Var(Nil)))))))), (Some(Var(hasTail)),Fld(_,Var(Bool)))))),None,None,List(),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(Nil),List(),Some(Tup(List((Some(Var(hasTail)),Fld(_,Var(Bool)))))),None,None,List(),None,None,TypingUnit(List())), NuFunDef(None,Var(gen),None,List(),Left(Lam(Tup(List()),Blk(List(If(IfThen(Var(anyUnknown),App(NuNew(Var(List)),Tup(List((None,Fld(_,App(Var(gen),Tup(List())))), (None,Fld(_,Var(true))))))),Some(App(NuNew(Var(Nil)),Tup(List((None,Fld(_,Var(false))))))))))))), App(Var(gen),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class List$1([l: |(List, Nil,), hasTail: Bool,]) {} @@ -850,8 +830,7 @@ class Foo(x: Int){ fun boo(z) = bar(z)+x } (new Foo(1)).boo(2) -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Foo),List(),Some(Tup(List((Some(Var(x)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(bar),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(y))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y))))))))), NuFunDef(None,Var(boo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(z))))),App(Var(+),Tup(List((None,Fld(_,App(Var(bar),Tup(List((None,Fld(_,Var(z)))))))), (None,Fld(_,Var(x)))))))))))), App(Sel(Bra(false,App(NuNew(Var(Foo)),Tup(List((None,Fld(_,IntLit(1))))))),Var(boo)),Tup(List((None,Fld(_,IntLit(2)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([x: Int,]) { @@ -887,8 +866,7 @@ class OneInt(a: Int){ if(a > 0) then (new OneInt(a - 1)).fac() else 1 } (new OneInt(10)).fac() -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(OneInt),List(),Some(Tup(List((Some(Var(a)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(fac),None,List(),Right(PolyType(List(),Function(Tuple(List()),TypeName(Int))))), NuFunDef(None,Var(fac),None,List(),Left(Lam(Tup(List()),Blk(List(If(IfThen(Bra(false,App(Var(>),Tup(List((None,Fld(_,Var(a))), (None,Fld(_,IntLit(0))))))),App(Sel(Bra(false,App(NuNew(Var(OneInt)),Tup(List((None,Fld(_,App(Var(-),Tup(List((None,Fld(_,Var(a))), (None,Fld(_,IntLit(1)))))))))))),Var(fac)),Tup(List()))),Some(IntLit(1))))))))))), App(Sel(Bra(false,App(NuNew(Var(OneInt)),Tup(List((None,Fld(_,IntLit(10))))))),Var(fac)),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class OneInt$1([a: Int,]) { @@ -937,8 +915,7 @@ fun g(x) = if x > any then g(x - 1) else f(x - 2) g(1) -//│ Parsed: -//│ TypingUnit(List(NuFunDef(Some(false),Var(any),None,List(),Left(IntLit(-20))), NuFunDef(None,Var(f),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(If(IfThen(App(Var(>),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(any)))))),IntLit(0)),Some(App(Var(g),Tup(List((None,Fld(_,App(Var(-),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1)))))))))))))))))), NuFunDef(None,Var(g),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Blk(List(If(IfThen(App(Var(>),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(any)))))),App(Var(g),Tup(List((None,Fld(_,App(Var(-),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1)))))))))))),Some(App(Var(f),Tup(List((None,Fld(_,App(Var(-),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(2)))))))))))))))))), App(Var(g),Tup(List((None,Fld(_,IntLit(1)))))))) +//│ //│ Lifted: //│ TypingUnit { //│ let any$3 = () => -20 @@ -976,8 +953,7 @@ class OneBool(b: Bool){ fun get = () -> b } (if b then new OneInt(1) else new OneBool(true)).get() -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(OneInt),List(),Some(Tup(List((Some(Var(a)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(get),None,List(),Left(Lam(Tup(List()),Var(a))))))), NuTypeDef(Cls,TypeName(OneBool),List(),Some(Tup(List((Some(Var(b)),Fld(_,Var(Bool)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(get),None,List(),Left(Lam(Tup(List()),Var(b))))))), App(Sel(Bra(false,If(IfThen(Var(b),App(NuNew(Var(OneInt)),Tup(List((None,Fld(_,IntLit(1))))))),Some(App(NuNew(Var(OneBool)),Tup(List((None,Fld(_,Var(true))))))))),Var(get)),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class OneInt$1([a: Int,]) {fun get = () => (this).a} @@ -1022,8 +998,7 @@ let bar = Bar(42) baz(bar) (new Car()).da(Bar(1337)) bar.car -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Bar),List(),Some(Tup(List((Some(Var(x)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List((None,Fld(_,Var(x))))),Var(x)))), NuFunDef(None,Var(FooMinus),None,List(),Left(Lam(Tup(List((Some(Var(y)),Fld(_,Var(Int))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,Var(y))))))))), NuFunDef(None,Var(car),None,List(),Left(App(Var(foo),Tup(List((None,Fld(_,IntLit(2))))))))))), NuTypeDef(Cls,TypeName(Car),List(),None,None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(da),None,List(),Left(Lam(Tup(List((Some(Var(b)),Fld(_,Var(Bar))))),App(Sel(Var(b),Var(foo)),Tup(List((None,Fld(_,IntLit(2)))))))))))), NuFunDef(None,Var(baz),None,List(),Left(Lam(Tup(List((Some(Var(b)),Fld(_,Var(Bar))))),App(Sel(Var(b),Var(foo)),Tup(List((None,Fld(_,IntLit(2))))))))), NuFunDef(Some(false),Var(bar),None,List(),Left(App(Var(Bar),Tup(List((None,Fld(_,IntLit(42)))))))), App(Var(baz),Tup(List((None,Fld(_,Var(bar)))))), App(Sel(Bra(false,App(NuNew(Var(Car)),Tup(List()))),Var(da)),Tup(List((None,Fld(_,App(Var(Bar),Tup(List((None,Fld(_,IntLit(1337))))))))))), Sel(Var(bar),Var(car)))) +//│ //│ Lifted: //│ TypingUnit { //│ class Bar$1([x: Int,]) { @@ -1093,8 +1068,7 @@ class Sub2(c: Int) extends Sub(c+c){ } (new Sub(10)).foo() (new Sub2(c)).foo() -//│ Parsed: -//│ TypingUnit(List(NuFunDef(Some(false),Var(c),None,List(),Left(IntLit(5))), NuTypeDef(Cls,TypeName(Sup),List(),Some(Tup(List((Some(Var(a)),Fld(_,Var(Int)))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List()),Var(a))))))), NuTypeDef(Cls,TypeName(Sub),List(),Some(Tup(List((Some(Var(b)),Fld(_,Var(Int)))))),None,None,List(App(Var(Sup),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(b))), (None,Fld(_,Var(b)))))))))))),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(Sub2),List(),Some(Tup(List((Some(Var(c)),Fld(_,Var(Int)))))),None,None,List(App(Var(Sub),Tup(List((None,Fld(_,App(Var(+),Tup(List((None,Fld(_,Var(c))), (None,Fld(_,Var(c)))))))))))),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List()),App(Var(+),Tup(List((None,Fld(_,Var(a))), (None,Fld(_,Var(c)))))))))))), App(Sel(Bra(false,App(NuNew(Var(Sub)),Tup(List((None,Fld(_,IntLit(10))))))),Var(foo)),Tup(List())), App(Sel(Bra(false,App(NuNew(Var(Sub2)),Tup(List((None,Fld(_,Var(c))))))),Var(foo)),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class Sup$1([a: Int,]) {fun foo = () => (this).a} @@ -1151,8 +1125,7 @@ class F1() extends Foo(x => x+1){} class F2() extends Foo(x => x+2){} (new F1()).foo() (new F2()).foo() -//│ Parsed: -//│ TypingUnit(List(NuTypeDef(Cls,TypeName(Foo),List(),Some(Tup(List((Some(Var(f)),Fld(_,App(Var(->),Tup(List((None,Fld(_,Var(Int))), (None,Fld(_,Var(Int))))))))))),None,None,List(),None,None,TypingUnit(List(NuFunDef(None,Var(foo),None,List(),Left(Lam(Tup(List()),App(Var(f),Tup(List((None,Fld(_,IntLit(1)))))))))))), NuTypeDef(Cls,TypeName(F1),List(),Some(Tup(List())),None,None,List(App(Var(Foo),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(1))))))))))))),None,None,TypingUnit(List())), NuTypeDef(Cls,TypeName(F2),List(),Some(Tup(List())),None,None,List(App(Var(Foo),Tup(List((None,Fld(_,Lam(Tup(List((None,Fld(_,Var(x))))),App(Var(+),Tup(List((None,Fld(_,Var(x))), (None,Fld(_,IntLit(2))))))))))))),None,None,TypingUnit(List())), App(Sel(Bra(false,App(NuNew(Var(F1)),Tup(List()))),Var(foo)),Tup(List())), App(Sel(Bra(false,App(NuNew(Var(F2)),Tup(List()))),Var(foo)),Tup(List())))) +//│ //│ Lifted: //│ TypingUnit { //│ class Foo$1([f: ->(Int, Int,),]) {fun foo = () => (this).f(1,)} diff --git a/compiler/shared/test/scala/mlscript/compiler/Test.scala b/compiler/shared/test/scala/mlscript/compiler/Test.scala index a93ca5089f..7f4c816981 100644 --- a/compiler/shared/test/scala/mlscript/compiler/Test.scala +++ b/compiler/shared/test/scala/mlscript/compiler/Test.scala @@ -13,8 +13,6 @@ class DiffTestCompiler extends DiffTests { import DiffTestCompiler.* override def postProcess(mode: ModeType, basePath: List[Str], testName: Str, unit: TypingUnit): List[Str] = val outputBuilder = StringBuilder() - outputBuilder ++= "Parsed:\n" - outputBuilder ++= unit.toString outputBuilder ++= "\nLifted:\n" var rstUnit = unit;