From 1f3ea5e6af8cc12a46368e126d64b52ce48c09eb Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Sat, 30 Aug 2025 11:40:13 +0200 Subject: [PATCH] Removed ssa dependency from the scanner --- src/compiler/parseTypes.go | 2 ++ src/core/Function.go | 16 ++++++++++++++++ src/scanner/scanSignature.go | 11 +++-------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/compiler/parseTypes.go b/src/compiler/parseTypes.go index be7f9a5..988e87e 100644 --- a/src/compiler/parseTypes.go +++ b/src/compiler/parseTypes.go @@ -19,6 +19,7 @@ func parseTypes(functions iter.Seq[*core.Function], env *core.Environment) error } for i, input := range f.Input { + input.Name = input.Tokens[0].String(f.File.Bytes) input.Typ = core.ParseType(input.Tokens[1:], f.File.Bytes, env) if input.Typ == nil { @@ -33,6 +34,7 @@ func parseTypes(functions iter.Seq[*core.Function], env *core.Environment) error if len(output.Tokens) > 1 && output.Tokens[0].Kind == token.Identifier { output.Name = output.Tokens[0].String(f.File.Bytes) + output.Source.EndPos = output.Tokens[0].End() typeTokens = typeTokens[1:] } diff --git a/src/core/Function.go b/src/core/Function.go index df6c6be..07eafef 100644 --- a/src/core/Function.go +++ b/src/core/Function.go @@ -27,6 +27,22 @@ type Function struct { codegen.Function } +// AddInput adds an input parameter. +func (f *Function) AddInput(tokens token.List, source token.Source) { + f.Input = append(f.Input, &ssa.Parameter{ + Tokens: tokens, + Source: source, + }) +} + +// AddOutput adds an output parameter. +func (f *Function) AddOutput(tokens token.List, source token.Source) { + f.Output = append(f.Output, &ssa.Parameter{ + Tokens: tokens, + Source: source, + }) +} + // IsExtern returns true if the function has no body. func (f *Function) IsExtern() bool { return f.Body == nil diff --git a/src/scanner/scanSignature.go b/src/scanner/scanSignature.go index ccd6157..8cf8240 100644 --- a/src/scanner/scanSignature.go +++ b/src/scanner/scanSignature.go @@ -4,7 +4,6 @@ import ( "git.urbach.dev/cli/q/src/core" "git.urbach.dev/cli/q/src/errors" "git.urbach.dev/cli/q/src/fs" - "git.urbach.dev/cli/q/src/ssa" "git.urbach.dev/cli/q/src/token" ) @@ -96,14 +95,10 @@ func scanSignature(file *fs.File, pkg string, tokens token.List, i int, delimite } if param[0].Kind != token.Identifier { - return nil, i, errors.New(InvalidParameterName, file, param[0].Position) + return nil, i, errors.New(InvalidParameterName, file, position) } - function.Input = append(function.Input, &ssa.Parameter{ - Name: param[0].String(file.Bytes), - Tokens: param, - Source: token.Source{StartPos: param[0].Position, EndPos: param[0].End()}, - }) + function.AddInput(param, token.Source{StartPos: position, EndPos: param[0].End()}) } if outputStart == -1 { @@ -130,7 +125,7 @@ func scanSignature(file *fs.File, pkg string, tokens token.List, i int, delimite return nil, i, errors.New(MissingParameter, file, position) } - function.Output = append(function.Output, &ssa.Parameter{Tokens: param}) + function.AddOutput(param, token.Source{StartPos: position, EndPos: param[len(param)-1].End()}) } return function, i, nil -- 2.51.2