Simplified compilation of function calls

This commit is contained in:
2025-03-02 21:36:23 +01:00
parent c3054369e3
commit ea233d789d
14 changed files with 114 additions and 97 deletions

View File

@ -0,0 +1,3 @@
main() {
loop
}

View File

@ -1,3 +0,0 @@
main() {
x := 1 + f(x)
}

View File

@ -0,0 +1,3 @@
main() {
x := 1 + unknown(x)
}

View File

@ -39,6 +39,7 @@ var errs = []struct {
{"MissingBlockEnd.q", errors.MissingBlockEnd},
{"MissingBlockEnd2.q", errors.MissingBlockEnd},
{"MissingBlockStart.q", errors.MissingBlockStart},
{"MissingBlockStart2.q", errors.MissingBlockStart},
{"MissingExpression.q", errors.MissingExpression},
{"MissingGroupEnd.q", errors.MissingGroupEnd},
{"MissingGroupStart.q", errors.MissingGroupStart},
@ -52,11 +53,11 @@ var errs = []struct {
{"ReturnCountMismatch.q", &errors.ReturnCountMismatch{Count: 1, ExpectedCount: 0}},
{"TypeMismatch.q", &errors.TypeMismatch{Expected: "*any", Encountered: "int", ParameterName: "p"}},
{"TypeMismatch2.q", &errors.TypeMismatch{Expected: "[]any", Encountered: "int", ParameterName: "array"}},
{"UnknownFunction.q", &errors.UnknownFunction{Name: "unknown"}},
{"UnknownFunction2.q", &errors.UnknownFunction{Name: "f"}},
{"UnknownIdentifier.q", &errors.UnknownIdentifier{Name: "x"}},
{"UnknownIdentifier2.q", &errors.UnknownIdentifier{Name: "x"}},
{"UnknownIdentifier3.q", &errors.UnknownIdentifier{Name: "x"}},
{"UnknownIdentifier4.q", &errors.UnknownIdentifier{Name: "unknown"}},
{"UnknownIdentifier5.q", &errors.UnknownIdentifier{Name: "unknown"}},
{"UnknownPackage.q", &errors.UnknownPackage{Name: "sys"}},
{"UnknownType.q", &errors.UnknownType{Name: "unknown"}},
{"UnknownType2.q", &errors.UnknownType{Name: "unknown"}},

View File

@ -0,0 +1,11 @@
import core
struct Struct {
func *any
}
main() {
s := new(Struct)
s.func = core.exit
s.func()
}

View File

@ -0,0 +1,21 @@
import sys
main() {
x := 0
loop {
for 0..10 {
x += 1
}
assert x == 10
loop {
x -= 1
if x == 0 {
sys.exit(0)
}
}
}
}

View File

@ -58,8 +58,9 @@ var programs = []struct {
{"branch-save", 0},
{"jump-near", 0},
{"switch", 0},
{"loop-infinite", 0},
{"loop", 0},
{"loop-lifetime", 0},
{"loop-in-loop", 0},
{"for", 0},
{"memory-free", 0},
{"out-of-memory", 0},
@ -69,6 +70,7 @@ var programs = []struct {
{"len", 0},
{"cast", 0},
{"function-pointer", 0},
{"function-pointer-field", 0},
}
func TestPrograms(t *testing.T) {