This PR sets up the new integrated test/bench suite. It then migrates all benchmarks and some related tests to the new suite. There's also some documentation and some linting. For now, a lot of the old tests are left alone so this PR doesn't become even larger than it already is. Eventually, all tests should be migrated to the new suite though so there isn't a confusing mix of two systems.
459 lines
16 KiB
Text
459 lines
16 KiB
Text
/-! This test asserts that the compiler is able to succesfully extract certain terms as statically
|
|
initializable values. -/
|
|
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def stringTest1._closed_0 : obj :=
|
|
let x_1 : obj := "literal";
|
|
ret x_1
|
|
def stringTest1 : obj :=
|
|
let x_1 : obj := stringTest1._closed_0;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked stringTest1._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest1 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def stringTest1 : String := "literal"
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def stringTest2._closed_0 : obj :=
|
|
let x_1 : obj := "A";
|
|
ret x_1
|
|
def stringTest2._closed_1 : obj :=
|
|
let x_1 : obj := "B";
|
|
ret x_1
|
|
def stringTest2._closed_2 : obj :=
|
|
let x_1 : obj := "C";
|
|
ret x_1
|
|
def stringTest2._closed_3 : tobj :=
|
|
let x_1 : tagged := ctor_0[List.nil];
|
|
let x_2 : obj := stringTest2._closed_2;
|
|
let x_3 : obj := ctor_1[List.cons] x_2 x_1;
|
|
ret x_3
|
|
def stringTest2._closed_4 : tobj :=
|
|
let x_1 : tobj := stringTest2._closed_3;
|
|
let x_2 : obj := stringTest2._closed_1;
|
|
let x_3 : obj := ctor_1[List.cons] x_2 x_1;
|
|
ret x_3
|
|
def stringTest2._closed_5 : tobj :=
|
|
let x_1 : tobj := stringTest2._closed_4;
|
|
let x_2 : obj := stringTest2._closed_0;
|
|
let x_3 : obj := ctor_1[List.cons] x_2 x_1;
|
|
ret x_3
|
|
def stringTest2 : tobj :=
|
|
let x_1 : tobj := stringTest2._closed_5;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked stringTest2._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest2._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest2._closed_2 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest2._closed_3 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest2._closed_4 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest2._closed_5 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked stringTest2 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def stringTest2 : List String := ["A", "B", "C"]
|
|
|
|
open Lean
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest1._closed_0 : tobj :=
|
|
let x_1 : obj := stringTest2._closed_0;
|
|
let x_2 : tobj := Lean.Name.mkStr1 x_1;
|
|
ret x_2
|
|
def nameTest1 : tobj :=
|
|
let x_1 : tobj := nameTest1._closed_0;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest1._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest1 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest1 : Name := `A
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest2._closed_0 : tobj :=
|
|
let x_1 : obj := stringTest2._closed_1;
|
|
let x_2 : obj := stringTest2._closed_0;
|
|
let x_3 : tobj := Lean.Name.mkStr2 x_2 x_1;
|
|
ret x_3
|
|
def nameTest2 : tobj :=
|
|
let x_1 : tobj := nameTest2._closed_0;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest2._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest2 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest2 : Name := `A.B
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest3._closed_0 : tobj :=
|
|
let x_1 : obj := stringTest2._closed_2;
|
|
let x_2 : obj := stringTest2._closed_1;
|
|
let x_3 : obj := stringTest2._closed_0;
|
|
let x_4 : tobj := Lean.Name.mkStr3 x_3 x_2 x_1;
|
|
ret x_4
|
|
def nameTest3 : tobj :=
|
|
let x_1 : tobj := nameTest3._closed_0;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest3._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest3 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest3 : Name := `A.B.C
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest4._closed_0 : obj :=
|
|
let x_1 : obj := "D";
|
|
ret x_1
|
|
def nameTest4._closed_1 : tobj :=
|
|
let x_1 : obj := nameTest4._closed_0;
|
|
let x_2 : obj := stringTest2._closed_2;
|
|
let x_3 : obj := stringTest2._closed_1;
|
|
let x_4 : obj := stringTest2._closed_0;
|
|
let x_5 : tobj := Lean.Name.mkStr4 x_4 x_3 x_2 x_1;
|
|
ret x_5
|
|
def nameTest4 : tobj :=
|
|
let x_1 : tobj := nameTest4._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest4._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest4._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest4 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest4 : Name := `A.B.C.D
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest5._closed_0 : obj :=
|
|
let x_1 : obj := "E";
|
|
ret x_1
|
|
def nameTest5._closed_1 : tobj :=
|
|
let x_1 : obj := nameTest5._closed_0;
|
|
let x_2 : obj := nameTest4._closed_0;
|
|
let x_3 : obj := stringTest2._closed_2;
|
|
let x_4 : obj := stringTest2._closed_1;
|
|
let x_5 : obj := stringTest2._closed_0;
|
|
let x_6 : tobj := Lean.Name.mkStr5 x_5 x_4 x_3 x_2 x_1;
|
|
ret x_6
|
|
def nameTest5 : tobj :=
|
|
let x_1 : tobj := nameTest5._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest5._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest5._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest5 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest5 : Name := `A.B.C.D.E
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest6._closed_0 : obj :=
|
|
let x_1 : obj := "F";
|
|
ret x_1
|
|
def nameTest6._closed_1 : tobj :=
|
|
let x_1 : obj := nameTest6._closed_0;
|
|
let x_2 : obj := nameTest5._closed_0;
|
|
let x_3 : obj := nameTest4._closed_0;
|
|
let x_4 : obj := stringTest2._closed_2;
|
|
let x_5 : obj := stringTest2._closed_1;
|
|
let x_6 : obj := stringTest2._closed_0;
|
|
let x_7 : tobj := Lean.Name.mkStr6 x_6 x_5 x_4 x_3 x_2 x_1;
|
|
ret x_7
|
|
def nameTest6 : tobj :=
|
|
let x_1 : tobj := nameTest6._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest6._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest6._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest6 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest6 : Name := `A.B.C.D.E.F
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest7._closed_0 : obj :=
|
|
let x_1 : obj := "G";
|
|
ret x_1
|
|
def nameTest7._closed_1 : tobj :=
|
|
let x_1 : obj := nameTest7._closed_0;
|
|
let x_2 : obj := nameTest6._closed_0;
|
|
let x_3 : obj := nameTest5._closed_0;
|
|
let x_4 : obj := nameTest4._closed_0;
|
|
let x_5 : obj := stringTest2._closed_2;
|
|
let x_6 : obj := stringTest2._closed_1;
|
|
let x_7 : obj := stringTest2._closed_0;
|
|
let x_8 : tobj := Lean.Name.mkStr7 x_7 x_6 x_5 x_4 x_3 x_2 x_1;
|
|
ret x_8
|
|
def nameTest7 : tobj :=
|
|
let x_1 : tobj := nameTest7._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest7._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest7._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest7 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest7 : Name := `A.B.C.D.E.F.G
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest8._closed_0 : obj :=
|
|
let x_1 : obj := "H";
|
|
ret x_1
|
|
def nameTest8._closed_1 : tobj :=
|
|
let x_1 : obj := nameTest8._closed_0;
|
|
let x_2 : obj := nameTest7._closed_0;
|
|
let x_3 : obj := nameTest6._closed_0;
|
|
let x_4 : obj := nameTest5._closed_0;
|
|
let x_5 : obj := nameTest4._closed_0;
|
|
let x_6 : obj := stringTest2._closed_2;
|
|
let x_7 : obj := stringTest2._closed_1;
|
|
let x_8 : obj := stringTest2._closed_0;
|
|
let x_9 : tobj := Lean.Name.mkStr8 x_8 x_7 x_6 x_5 x_4 x_3 x_2 x_1;
|
|
ret x_9
|
|
def nameTest8 : tobj :=
|
|
let x_1 : tobj := nameTest8._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest8._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest8._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest8 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest8 : Name := `A.B.C.D.E.F.G.H
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest9._closed_0 : tobj :=
|
|
let x_1 : obj := stringTest2._closed_0;
|
|
let x_2 : tagged := ctor_0[Lean.Name.anonymous._impl];
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_1 : tobj :=
|
|
let x_1 : obj := stringTest2._closed_1;
|
|
let x_2 : tobj := nameTest9._closed_0;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_2 : tobj :=
|
|
let x_1 : obj := stringTest2._closed_2;
|
|
let x_2 : tobj := nameTest9._closed_1;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_3 : tobj :=
|
|
let x_1 : obj := nameTest4._closed_0;
|
|
let x_2 : tobj := nameTest9._closed_2;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_4 : tobj :=
|
|
let x_1 : obj := nameTest5._closed_0;
|
|
let x_2 : tobj := nameTest9._closed_3;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_5 : tobj :=
|
|
let x_1 : obj := nameTest6._closed_0;
|
|
let x_2 : tobj := nameTest9._closed_4;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_6 : tobj :=
|
|
let x_1 : obj := nameTest7._closed_0;
|
|
let x_2 : tobj := nameTest9._closed_5;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_7 : tobj :=
|
|
let x_1 : obj := nameTest8._closed_0;
|
|
let x_2 : tobj := nameTest9._closed_6;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9._closed_8 : obj :=
|
|
let x_1 : obj := "I";
|
|
ret x_1
|
|
def nameTest9._closed_9 : tobj :=
|
|
let x_1 : obj := nameTest9._closed_8;
|
|
let x_2 : tobj := nameTest9._closed_7;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest9 : tobj :=
|
|
let x_1 : tobj := nameTest9._closed_9;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_2 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_3 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_4 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_5 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_6 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_7 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_8 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9._closed_9 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest9 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest9 : Name := `A.B.C.D.E.F.G.H.I
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest10._closed_0 : tobj :=
|
|
let x_1 : tagged := 1;
|
|
let x_2 : tobj := nameTest3._closed_0;
|
|
let x_3 : tobj := Lean.Name.num._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest10 : tobj :=
|
|
let x_1 : tobj := nameTest10._closed_0;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest10._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest10 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest10 : Name := .num `A.B.C 1
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def nameTest11._closed_0 : obj :=
|
|
let x_1 : obj := "AHHHH";
|
|
ret x_1
|
|
def nameTest11._closed_1 : tobj :=
|
|
let x_1 : obj := nameTest11._closed_0;
|
|
let x_2 : tobj := nameTest3._closed_0;
|
|
let x_3 : tobj := Lean.Name.str._override x_2 x_1;
|
|
ret x_3
|
|
def nameTest11 : tobj :=
|
|
let x_1 : tobj := nameTest11._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked nameTest11._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest11._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked nameTest11 as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def nameTest11 : Name := .str `A.B.C "AHHHH"
|
|
|
|
structure WithScalars where
|
|
s : String
|
|
a : UInt64
|
|
b : UInt32
|
|
c : UInt16
|
|
d : UInt8
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def testWithScalars._closed_0 : obj :=
|
|
let x_1 : obj := "W";
|
|
ret x_1
|
|
def testWithScalars._closed_1 : obj :=
|
|
let x_1 : u8 := 3;
|
|
let x_2 : u16 := 2;
|
|
let x_3 : u32 := 1;
|
|
let x_4 : u64 := 0;
|
|
let x_5 : obj := testWithScalars._closed_0;
|
|
let x_6 : obj := ctor_0.0.15[WithScalars.mk] x_5;
|
|
sset x_6[1, 0] : u64 := x_4;
|
|
sset x_6[1, 8] : u32 := x_3;
|
|
sset x_6[1, 12] : u16 := x_2;
|
|
sset x_6[1, 14] : u8 := x_1;
|
|
ret x_6
|
|
def testWithScalars : obj :=
|
|
let x_1 : obj := testWithScalars._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked testWithScalars._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked testWithScalars._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked testWithScalars as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def testWithScalars : WithScalars := ⟨"W", 0, 1, 2, 3⟩
|
|
|
|
structure WithUSize where
|
|
s : String
|
|
a : USize
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def testWithUSize._closed_0 : obj :=
|
|
let x_1 : obj := "U";
|
|
ret x_1
|
|
def testWithUSize._closed_1 : obj :=
|
|
let x_1 : usize := 0;
|
|
let x_2 : obj := testWithUSize._closed_0;
|
|
let x_3 : obj := ctor_0.1.0[WithUSize.mk] x_2;
|
|
uset x_3[1] := x_1;
|
|
ret x_3
|
|
def testWithUSize : obj :=
|
|
let x_1 : obj := testWithUSize._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked testWithUSize._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked testWithUSize._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked testWithUSize as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def testWithUSize : WithUSize := ⟨"U", 0⟩
|
|
|
|
structure WithUSizeAndScalars where
|
|
s : String
|
|
a : UInt64
|
|
b : UInt32
|
|
c : UInt16
|
|
d : UInt8
|
|
e : USize
|
|
|
|
/--
|
|
trace: [Compiler.IR] [result]
|
|
def testWithUSizeAndScalars._closed_0 : obj :=
|
|
let x_1 : obj := "WUAS";
|
|
ret x_1
|
|
def testWithUSizeAndScalars._closed_1 : obj :=
|
|
let x_1 : usize := 4;
|
|
let x_2 : u8 := 3;
|
|
let x_3 : u16 := 2;
|
|
let x_4 : u32 := 1;
|
|
let x_5 : u64 := 0;
|
|
let x_6 : obj := testWithUSizeAndScalars._closed_0;
|
|
let x_7 : obj := ctor_0.1.15[WithUSizeAndScalars.mk] x_6;
|
|
sset x_7[2, 0] : u64 := x_5;
|
|
sset x_7[2, 8] : u32 := x_4;
|
|
sset x_7[2, 12] : u16 := x_3;
|
|
sset x_7[2, 14] : u8 := x_2;
|
|
uset x_7[1] := x_1;
|
|
ret x_7
|
|
def testWithUSizeAndScalars : obj :=
|
|
let x_1 : obj := testWithUSizeAndScalars._closed_1;
|
|
ret x_1
|
|
[compiler.ir.simple_ground] Marked testWithUSizeAndScalars._closed_0 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked testWithUSizeAndScalars._closed_1 as simple ground expr
|
|
[compiler.ir.simple_ground] Marked testWithUSizeAndScalars as simple ground expr
|
|
-/
|
|
#guard_msgs in
|
|
set_option trace.compiler.ir.result true in
|
|
set_option trace.compiler.ir.simple_ground true in
|
|
def testWithUSizeAndScalars : WithUSizeAndScalars := ⟨"WUAS", 0, 1, 2, 3, 4⟩
|