From 60f6ebc8d8369721e105d826145af2b8856ac67e Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Tue, 27 Jan 2026 16:37:02 +0100 Subject: fix: improve multiple define The VM Vassign instruction now takes an argument to indicates the number of assignations to perform on the stack. Definitions with a function returning multiple values now work. There is still some simplifications, and also to apply the same strategy to var declarations with assign. --- parser/parse.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'parser/parse.go') diff --git a/parser/parse.go b/parser/parse.go index 9c1fd13..68721f2 100644 --- a/parser/parse.go +++ b/parser/parse.go @@ -184,11 +184,11 @@ func (p *Parser) parseAssign(in Tokens, aindex int) (out Tokens, err error) { // Map elements cannot be assigned directly, but only through IndexAssign. out = out[:len(out)-1] out = append(out, toks...) - out = append(out, newToken(lang.IndexAssign, "", in[aindex].Pos)) + out = append(out, newToken(lang.IndexAssign, "", in[aindex].Pos, len(lhs))) } else { out = append(out, toks...) if out[len(out)-1].Tok != lang.Range { - out = append(out, newToken(in[aindex].Tok, "", in[aindex].Pos)) + out = append(out, newToken(in[aindex].Tok, "", in[aindex].Pos, len(lhs))) } } return out, err @@ -215,10 +215,10 @@ func (p *Parser) parseAssign(in Tokens, aindex int) (out Tokens, err error) { // Map elements cannot be assigned directly, but only through IndexAssign. out = out[:len(out)-1] out = append(out, toks...) - out = append(out, newToken(lang.IndexAssign, "", in[aindex].Pos)) + out = append(out, newToken(lang.IndexAssign, "", in[aindex].Pos, 1)) } else { out = append(out, toks...) - out = append(out, newToken(in[aindex].Tok, "", in[aindex].Pos)) + out = append(out, newToken(in[aindex].Tok, "", in[aindex].Pos, 1)) } } return out, err -- cgit v1.2.3