diff options
Diffstat (limited to 'parser/parse.go')
| -rw-r--r-- | parser/parse.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/parser/parse.go b/parser/parse.go index ffa8102..c13c33d 100644 --- a/parser/parse.go +++ b/parser/parse.go @@ -246,6 +246,15 @@ func (p *Parser) ParseFunc(in Tokens) (out Tokens, err error) { out = append(out, scanner.Token{Id: lang.Grow, Beg: l}) } 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}}) + if err != nil { + return out, err + } + out = append(out, x...) + } out = append(out, scanner.Token{Id: lang.Label, Str: fname + "_end"}) return out, err } |
