Added more tests

This commit is contained in:
Eduard Urbach 2025-02-05 11:11:15 +01:00
parent 8421a21c9a
commit 85568949a2
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
8 changed files with 20 additions and 7 deletions

View File

@ -18,6 +18,7 @@ var (
MissingGroupEnd = &Base{"Missing ')'"}
MissingMainFunction = &Base{"Missing main function"}
MissingOperand = &Base{"Missing operand"}
MissingParameter = &Base{"Missing parameter"}
MissingType = &Base{"Missing type"}
NotImplemented = &Base{"Not implemented"}
UnknownType = &Base{"Unknown type"}

View File

@ -164,7 +164,11 @@ func (s *Scanner) scanFunction(file *fs.File, tokens token.List, i int) (int, er
count := 0
err := parameters.Split(func(tokens token.List) error {
if len(tokens) < 2 {
if len(tokens) == 0 {
return errors.New(errors.MissingParameter, file, parameters[0].Position)
}
if len(tokens) == 1 {
return errors.New(errors.MissingType, file, tokens[0].End())
}

View File

@ -31,6 +31,10 @@ func (list List) LastIndexKind(kind Kind) int {
// Split calls the callback function on each set of tokens in a comma separated list.
func (list List) Split(call func(List) error) error {
if len(list) == 0 {
return nil
}
start := 0
groupLevel := 0
@ -58,14 +62,10 @@ func (list List) Split(call func(List) error) error {
}
}
if start != len(list) {
parameter := list[start:]
return call(parameter)
}
return nil
}
// Text returns the concatenated token text.
func (list List) Text(source []byte) string {
tmp := strings.Builder{}

View File

@ -0,0 +1 @@
f(,) {}

View File

@ -0,0 +1 @@
f(a Int,) -> Int { return a }

View File

@ -0,0 +1 @@
f(,a Int) {}

View File

@ -0,0 +1 @@
f(a) {}

View File

@ -40,6 +40,10 @@ var errs = []struct {
{"MissingMainFunction.q", errors.MissingMainFunction},
{"MissingOperand.q", errors.MissingOperand},
{"MissingOperand2.q", errors.MissingOperand},
{"MissingParameter.q", errors.MissingParameter},
{"MissingParameter2.q", errors.MissingParameter},
{"MissingParameter3.q", errors.MissingParameter},
{"MissingType.q", errors.MissingType},
{"ReturnCountMismatch.q", &errors.ReturnCountMismatch{Count: 1, ExpectedCount: 0}},
{"TypeMismatch.q", &errors.TypeMismatch{Expected: "Pointer", Encountered: "Int64", ParameterName: "p"}},
{"UnknownFunction.q", &errors.UnknownFunction{Name: "unknown"}},