fix: better LCNF pretty printing (#12684)

This commit is contained in:
Henrik Böving 2026-02-25 10:30:23 +01:00 committed by GitHub
parent 87ec768a50
commit 1bf43863e6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 36 additions and 36 deletions

View file

@ -83,10 +83,10 @@ def ppLetValue (e : LetValue pu) : M Format := do
| .proj _ i fvarId _ => return f!"{← ppFVar fvarId} # {i}"
| .fvar fvarId args => return f!"{← ppFVar fvarId}{← ppArgs args}"
| .const declName us args _ => return f!"{← ppExpr (.const declName us)}{← ppArgs args}"
| .ctor i args _ => return f!"{i} {← ppArgs args}"
| .ctor i args _ => return f!"{i}{← ppArgs args}"
| .fap declName args _ => return f!"{declName}{← ppArgs args}"
| .pap declName args _ => return f!"pap {declName}{← ppArgs args}"
| .oproj i fvarId _ => return f!"proj[{i}] {← ppFVar fvarId}"
| .oproj i fvarId _ => return f!"oproj[{i}] {← ppFVar fvarId}"
| .uproj i fvarId _ => return f!"uproj[{i}] {← ppFVar fvarId}"
| .sproj i offset fvarId _ => return f!"sproj[{i}, {offset}] {← ppFVar fvarId}"
| .reset n fvarId _ => return f!"reset[{n}] {← ppFVar fvarId}"
@ -144,11 +144,11 @@ mutual
return "⊥"
| .sset fvarId i offset y ty k _ =>
if pp.letVarTypes.get (← getOptions) then
return f!"sset {← ppFVar fvarId} [{i}, {offset}] : {← ppExpr ty} := {← ppFVar y} " ++ ";" ++ .line ++ (← ppCode k)
return f!"sset {← ppFVar fvarId}[{i}, {offset}] : {← ppExpr ty} := {← ppFVar y};" ++ .line ++ (← ppCode k)
else
return f!"sset {← ppFVar fvarId} [{i}, {offset}] := {← ppFVar y} " ++ ";" ++ .line ++ (← ppCode k)
return f!"sset {← ppFVar fvarId}[{i}, {offset}] := {← ppFVar y};" ++ .line ++ (← ppCode k)
| .uset fvarId i y k _ =>
return f!"uset {← ppFVar fvarId} [{i}] := {← ppFVar y} " ++ ";" ++ .line ++ (← ppCode k)
return f!"uset {← ppFVar fvarId}[{i}] := {← ppFVar y};" ++ .line ++ (← ppCode k)
| .inc fvarId n _ _ k _ =>
if n != 1 then
return f!"inc[{n}] {← ppFVar fvarId};" ++ .line ++ (← ppCode k)

View file

@ -2,8 +2,8 @@
def f x.1 : obj :=
cases x.1 : obj
| Prod.mk =>
let fst.2 := proj[0] x.1;
let snd.3 := proj[1] x.1;
let fst.2 := oproj[0] x.1;
let snd.3 := oproj[1] x.1;
let _x.4 := reset[2] x.1;
let _x.5 := reuse _x.4 in ctor_0[Prod.mk] snd.3 fst.2;
return _x.5
@ -11,8 +11,8 @@
def Sigma.toProd._redArg x.1 : obj :=
cases x.1 : obj
| Sigma.mk =>
let fst.2 := proj[0] x.1;
let snd.3 := proj[1] x.1;
let fst.2 := oproj[0] x.1;
let snd.3 := oproj[1] x.1;
let _x.4 := reset[2] x.1;
let _x.5 := reuse _x.4 in ctor_0[Prod.mk] fst.2 snd.3;
return _x.5
@ -24,16 +24,16 @@
def foo x.1 : tobj :=
cases x.1 : tobj
| List.nil =>
let _x.2 := ctor_0[List.nil] ;
let _x.2 := ctor_0[List.nil];
return _x.2
| List.cons =>
let head.3 := proj[0] x.1;
let head.3 := oproj[0] x.1;
cases head.3 : tobj
| Prod.mk =>
let tail.4 := proj[1] x.1;
let tail.4 := oproj[1] x.1;
let _x.5 := reset[2] x.1;
let fst.6 := proj[0] head.3;
let snd.7 := proj[1] head.3;
let fst.6 := oproj[0] head.3;
let snd.7 := oproj[1] head.3;
let _x.8 := foo tail.4;
let _x.9 := reuse _x.5 in ctor_1[List.cons] fst.6 _x.8;
return _x.9

View file

@ -8,12 +8,12 @@
let v := Array.uget ◾ bs i ◾;
cases v : obj
| Prod.mk =>
let fst := proj[0] v;
let fst := oproj[0] v;
let _x.2 := reset[2] v;
cases fst : obj
| Prod.mk =>
let fst := proj[0] fst;
let snd := proj[1] fst;
let fst := oproj[0] fst;
let snd := oproj[1] fst;
let _x.3 := reset[2] fst;
let _x.4 := 0;
let bs' := Array.uset ◾ bs i _x.4 ◾;

View file

@ -27,14 +27,14 @@ trace: [Compiler.explicitRc] size: 27
| Bool.false =>
dec y;
let z := g x;
let fst := proj[0] z;
let fst := oproj[0] z;
inc fst;
dec z;
goto _jp.1 fst
| Bool.true =>
dec x;
let z := g y;
let fst := proj[0] z;
let fst := oproj[0] z;
inc fst;
dec z;
goto _jp.1 fst

View file

@ -9,7 +9,7 @@ trace: [Compiler.pushProj] size: 5
let _x.1 : tagged := 0;
return _x.1
| Option.some =>
let val.2 : tobj := proj[0] a;
let val.2 : tobj := oproj[0] a;
return val.2
-/
#guard_msgs in
@ -32,10 +32,10 @@ trace: [Compiler.pushProj] size: 10
| Option.none =>
return a
| Option.some =>
let val.1 : tobj := proj[0] a;
let val.2 : tobj := proj[0] b;
let val.1 : tobj := oproj[0] a;
let val.2 : tobj := oproj[0] b;
let _x.3 : tobj := Nat.add val.1 val.2;
let _x.4 : obj := ctor_1[Option.some] _x.3;
let _x.4 : obj := ctor_1[Option.some] _x.3;
return _x.4
-/
#guard_msgs in
@ -58,16 +58,16 @@ trace: [Compiler.pushProj] size: 14
| Option.some =>
cases b : tobj
| Option.none =>
let val.1 : tobj := proj[0] a;
let val.1 : tobj := oproj[0] a;
let _x.2 : tagged := 1;
let _x.3 : tobj := Nat.add val.1 _x.2;
let _x.4 : obj := ctor_1[Option.some] _x.3;
let _x.4 : obj := ctor_1[Option.some] _x.3;
return _x.4
| Option.some =>
let val.5 : tobj := proj[0] a;
let val.6 : tobj := proj[0] b;
let val.5 : tobj := oproj[0] a;
let val.6 : tobj := oproj[0] b;
let _x.7 : tobj := Nat.add val.5 val.6;
let _x.8 : obj := ctor_1[Option.some] _x.7;
let _x.8 : obj := ctor_1[Option.some] _x.7;
return _x.8
-/
#guard_msgs in
@ -90,21 +90,21 @@ trace: [Compiler.pushProj] size: 18
| Option.some =>
cases b : tobj
| Option.none =>
let val.1 : tobj := proj[0] a;
let val.1 : tobj := oproj[0] a;
let _x.2 : tagged := 1;
let _x.3 : tobj := Nat.add val.1 _x.2;
let _x.4 : obj := ctor_1[Option.some] _x.3;
let _x.4 : obj := ctor_1[Option.some] _x.3;
return _x.4
| Option.some =>
cases c : tobj
| Bool.false =>
let _x.5 : tagged := ctor_0[Option.none] ;
let _x.5 : tagged := ctor_0[Option.none];
return _x.5
| Bool.true =>
let val.6 : tobj := proj[0] a;
let val.7 : tobj := proj[0] b;
let val.6 : tobj := oproj[0] a;
let val.7 : tobj := oproj[0] b;
let _x.8 : tobj := Nat.add val.6 val.7;
let _x.9 : obj := ctor_1[Option.some] _x.8;
let _x.9 : obj := ctor_1[Option.some] _x.8;
return _x.9
-/
#guard_msgs in

View file

@ -21,7 +21,7 @@ trace: [Compiler.saveMono] size: 5
let _x.1 := 1;
return _x.1
| Option.some =>
let val.2 := proj[0] x;
let val.2 := oproj[0] x;
let _x.3 := 0;
return _x.3
[Compiler.elimDeadVars] size: 5

View file

@ -24,7 +24,7 @@ trace: [Compiler.saveMono] size: 7
return _x.6
[Compiler.simpCase] size: 2
def test f : tobj :=
let n.1 := proj[0] f;
let n.1 := oproj[0] f;
let _x.2 := aux n.1;
return _x.2
-/