From cba26d8154feef8d9bee7f6cf7fd922d804066be Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Fri, 7 Feb 2025 21:25:29 +0100 Subject: [PATCH] Added more tests --- src/errors/Common.go | 1 + src/scanner/Scan.go | 3 +-- src/scanner/scanImport.go | 9 ++------- tests/errors/ExpectedPackageName.q | 1 + tests/errors_test.go | 1 + 5 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 tests/errors/ExpectedPackageName.q diff --git a/src/errors/Common.go b/src/errors/Common.go index 107cb3c..e78af1d 100644 --- a/src/errors/Common.go +++ b/src/errors/Common.go @@ -7,6 +7,7 @@ var ( ExpectedFunctionParameters = &Base{"Expected function parameters"} ExpectedFunctionDefinition = &Base{"Expected function definition"} ExpectedIfBeforeElse = &Base{"Expected an 'if' block before 'else'"} + ExpectedPackageName = &Base{"Expected package name"} ExpectedStructName = &Base{"Expected struct name"} InvalidNumber = &Base{"Invalid number"} InvalidExpression = &Base{"Invalid expression"} diff --git a/src/scanner/Scan.go b/src/scanner/Scan.go index f2d3163..a0ca92d 100644 --- a/src/scanner/Scan.go +++ b/src/scanner/Scan.go @@ -18,9 +18,8 @@ func Scan(files []string) (<-chan *fs.File, <-chan *core.Function, <-chan types. errors: make(chan error), } - scanner.queueDirectory(filepath.Join(config.Library, "mem"), "mem") - go func() { + scanner.queueDirectory(filepath.Join(config.Library, "mem"), "mem") scanner.queue(files...) scanner.group.Wait() close(scanner.files) diff --git a/src/scanner/scanImport.go b/src/scanner/scanImport.go index b430e2e..710a76a 100644 --- a/src/scanner/scanImport.go +++ b/src/scanner/scanImport.go @@ -4,6 +4,7 @@ import ( "path/filepath" "git.akyoto.dev/cli/q/src/config" + "git.akyoto.dev/cli/q/src/errors" "git.akyoto.dev/cli/q/src/fs" "git.akyoto.dev/cli/q/src/token" ) @@ -13,7 +14,7 @@ func (s *Scanner) scanImport(file *fs.File, tokens token.List, i int) (int, erro i++ if tokens[i].Kind != token.Identifier { - panic("expected package name") + return i, errors.New(errors.ExpectedPackageName, file, tokens[i].Position) } packageName := tokens[i].Text(file.Bytes) @@ -31,11 +32,5 @@ func (s *Scanner) scanImport(file *fs.File, tokens token.List, i int) (int, erro } s.queueDirectory(fullPath, packageName) - i++ - - if tokens[i].Kind != token.NewLine && tokens[i].Kind != token.EOF { - panic("expected newline or eof") - } - return i, nil } diff --git a/tests/errors/ExpectedPackageName.q b/tests/errors/ExpectedPackageName.q new file mode 100644 index 0000000..efca996 --- /dev/null +++ b/tests/errors/ExpectedPackageName.q @@ -0,0 +1 @@ +import \ No newline at end of file diff --git a/tests/errors_test.go b/tests/errors_test.go index 20178a0..24c6b52 100644 --- a/tests/errors_test.go +++ b/tests/errors_test.go @@ -20,6 +20,7 @@ var errs = []struct { {"ExpectedIfBeforeElse.q", errors.ExpectedIfBeforeElse}, {"ExpectedIfBeforeElse2.q", errors.ExpectedIfBeforeElse}, {"ExpectedStructName.q", errors.ExpectedStructName}, + {"ExpectedPackageName.q", errors.ExpectedPackageName}, {"InvalidInstructionExpression.q", &errors.InvalidInstruction{Instruction: "+"}}, {"InvalidInstructionIdentifier.q", &errors.InvalidInstruction{Instruction: "abc"}}, {"InvalidInstructionNumber.q", &errors.InvalidInstruction{Instruction: "123"}},