diff options
Diffstat (limited to 'generate.go')
-rw-r--r-- | generate.go | 15 |
1 files changed, 15 insertions, 0 deletions
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 +} |