Improved code generation

This commit is contained in:
2024-07-04 12:32:56 +02:00
parent 4d88260333
commit 3340a5824f
9 changed files with 70 additions and 23 deletions

11
tests/programs/exit.q Normal file
View File

@ -0,0 +1,11 @@
main() {
exit(f(1) + f(2) + f(3))
}
exit(code) {
syscall(60, code)
}
f(x) {
return x + 1
}

View File

@ -18,6 +18,15 @@ var programs = []struct {
{"empty.q", "", 0},
{"square-sum.q", "", 25},
{"multi-calls.q", "", 9},
{"exit.q", "", 9},
}
func TestPrograms(t *testing.T) {
for _, test := range programs {
t.Run(test.Name, func(t *testing.T) {
run(t, filepath.Join("programs", test.Name), test.ExpectedOutput, test.ExpectedExitCode)
})
}
}
func BenchmarkPrograms(b *testing.B) {
@ -33,14 +42,6 @@ func BenchmarkPrograms(b *testing.B) {
}
}
func TestPrograms(t *testing.T) {
for _, test := range programs {
t.Run(test.Name, func(t *testing.T) {
run(t, filepath.Join("programs", test.Name), test.ExpectedOutput, test.ExpectedExitCode)
})
}
}
// run builds and runs the file to check if the output matches the expected output.
func run(t *testing.T, name string, expectedOutput string, expectedExitCode int) {
b := build.New(name)