aboutsummaryrefslogtreecommitdiff
path: root/generate.go
diff options
context:
space:
mode:
Diffstat (limited to 'generate.go')
-rw-r--r--generate.go15
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
+}