From bb80a9c772b077bdc7173055e88c3e9f8bb1c35b Mon Sep 17 00:00:00 2001 From: Himbeer Date: Fri, 30 Aug 2024 22:27:48 +0200 Subject: Allow the use of local variables in expressions --- generate.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'generate.go') diff --git a/generate.go b/generate.go index 187ec8f..5701cb1 100644 --- a/generate.go +++ b/generate.go @@ -476,3 +476,18 @@ func (c *callExpr) generate(w io.Writer) (string, error) { return ret, nil } + +func (v *varExpr) generate(w io.Writer) (string, error) { + ok, mutable := isDeclared(v.name, false) + if !ok { + return "", errUndeclared{name: v.name, line: v.line()} + } + + if mutable { + reg := allocReg() + fmt.Fprintf(w, "%s =w loadl %%%s\n", reg, v.name) + return reg, nil + } + + return localConsts[currentFunc][v.name], nil +} -- cgit v1.2.3