@@ -14,6 +14,8 @@ object ArityRaising extends Phase[CoreTransformed, CoreTransformed] {
1414 Context .module = mod
1515 val main = C .ensureMainExists(mod)
1616 val res = Deadcode .remove(main, core)
17+ println(" Before" )
18+ println(PrettyPrinter .format(res))
1719 val transformed = Context .timed(phaseName, source.name) { transform(res) }
1820 println(PrettyPrinter .format(transformed))
1921 println(" \n\n\n parts\n\n " )
@@ -28,10 +30,6 @@ object ArityRaising extends Phase[CoreTransformed, CoreTransformed] {
2830
2931 def transform (toplevel : Toplevel )(using C : Context , DC : DeclarationContext ): Toplevel = toplevel match {
3032 case Toplevel .Def (id, BlockLit (tparams, cparams, List (ValueParam (param, ValueType .Data (name, targs))), bparams, body)) =>
31- println(" ### id : " )
32- println(param)
33- println(name)
34- println(targs)
3533 DC .findData(name) match {
3634 case Some (Data (_, List (), List (Constructor (test, List (), List (Field (x, tpe1), Field (y, tpe2)))))) =>
3735 println(test)
@@ -45,11 +43,11 @@ object ArityRaising extends Phase[CoreTransformed, CoreTransformed] {
4543 }
4644
4745 case Toplevel .Def (id, block) =>
48- println( " \n\n id: " )
49- println(doIndentation(id.toString) )
50- println(" block: " )
51- println(doIndentation(block.toString))
52- Toplevel . Def (id, transform(block))
46+ val res = Toplevel . Def (id, transform(block) )
47+ println(" \n\n res: " )
48+ println(doIndentation(res.toString) )
49+ res
50+
5351 case Toplevel .Val (id, tpe, binding) => Toplevel .Val (id, tpe, transform(binding))
5452 }
5553
@@ -88,10 +86,15 @@ object ArityRaising extends Phase[CoreTransformed, CoreTransformed] {
8886 case Some (Data (_, List (), List (Constructor (test, List (), List (Field (x, tpe1), Field (y, tpe2)))))) =>
8987 val transformedVargs = List (ValueVar (x, tpe1), ValueVar (y, tpe2))
9088 val res = Stmt .App (BlockVar (id, BlockType .Function (List (), List (), List (tpe1, tpe2), List (), returnTpe), annotatedCapt), targs, transformedVargs, bargs)
89+ val latermatch : BlockLit = Block .BlockLit (List (), List (), List (ValueParam (x,tpe1), ValueParam (y, tpe2)), List (), res)
90+ val newMatch = Stmt .Match (vargs.head, List ((test, latermatch)), None )
9191 println(" res $$$$###" )
92- println(res)
93- println(vargs)
94- res
92+ println(stmt)
93+ println(name)
94+ println(test)
95+ println(vargs.head)
96+ println(newMatch)
97+ newMatch
9598
9699 case _ =>
97100 stmt
@@ -106,6 +109,7 @@ object ArityRaising extends Phase[CoreTransformed, CoreTransformed] {
106109 Stmt .If (transform(cond), transform(thn), transform(els))
107110 case Stmt .Match (scrutinee, clauses, default) =>
108111 Stmt .Match (transform(scrutinee), clauses.map { case (id, clause) => (id, transform(clause)) }, default map transform)
112+
109113 case _ => stmt
110114 }
111115
0 commit comments