diff options
| author | Marc Vertes <mvertes@free.fr> | 2024-03-12 10:03:41 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2024-03-12 10:03:41 +0100 |
| commit | cb8041b04472059703043b827a79287387c9dd8d (patch) | |
| tree | 240357f8047c9ea79c6a8908860c06104c3d905c | |
| parent | a3116a6613363f303b84f5f704f5e87495d4f3b9 (diff) | |
fixup
| -rw-r--r-- | parser/parse.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/parser/parse.go b/parser/parse.go index c13c33d..547957b 100644 --- a/parser/parse.go +++ b/parser/parse.go @@ -248,8 +248,8 @@ func (p *Parser) ParseFunc(in Tokens) (out Tokens, err error) { out = append(out, toks...) if out[len(out)-1].Id != lang.Return { // Ensure that a return statment is always added at end of function. - // TODO: detect missing or wrong returns - x, err := p.ParseReturn([]scanner.Token{{Id: lang.Return}}) + // TODO: detect missing or wrong returns. + x, err := p.ParseReturn(nil) if err != nil { return out, err } @@ -420,10 +420,12 @@ func (p *Parser) ParseLabel(in Tokens) (out Tokens, err error) { } func (p *Parser) ParseReturn(in Tokens) (out Tokens, err error) { - if len(in) > 1 { + if l := len(in); l > 1 { if out, err = p.ParseExpr(in[1:]); err != nil { return out, err } + } else if l == 0 { + in = Tokens{{Id: lang.Return}} // Implicit return in functions with no return parameters. } // TODO: the function symbol should be already present in the parser context. |
