Skip to content

Commit 4e9214a

Browse files
committed
Set :name metadata on vars
Signed-off-by: James Hamlin <jfhamlin@gmail.com>
1 parent 7c7c213 commit 4e9214a

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

pkg/lang/var.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ func NewVar(ns *Namespace, sym *Symbol) *Var {
100100
watches: emptyMap,
101101
}
102102
v.root.Store(Box{val: &UnboundVar{v: v}})
103-
v.meta.Store(NewBox(emptyMap))
103+
v.meta.Store(NewBox(emptyMap)) // Initialize for SetMeta to work
104+
v.SetMeta(emptyMap) // This will add :name and :ns metadata
104105
return v
105106
}
106107

@@ -167,6 +168,8 @@ func (v *Var) Meta() IPersistentMap {
167168

168169
func (v *Var) SetMeta(meta IPersistentMap) {
169170
// TODO: ResetMeta
171+
// Ensure these basis keys (matching Clojure's Var.java)
172+
meta = Assoc(meta, KWName, v.sym).(IPersistentMap)
170173
meta = Assoc(meta, KWNS, v.ns).(IPersistentMap)
171174
v.meta.Store(NewBox(meta))
172175
}

0 commit comments

Comments
 (0)