From bc6cd2ef12d4bfad041055095e927eec33fc9ca3 Mon Sep 17 00:00:00 2001 From: Robert Krimen Date: Mon, 5 Nov 2012 17:39:52 -0800 Subject: [PATCH] Get variable binding a bit closer to the specification --- runtime.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/runtime.go b/runtime.go index c36661a..5e55205 100644 --- a/runtime.go +++ b/runtime.go @@ -236,11 +236,18 @@ func (self *_runtime) continueEvaluate(node _node, _labelSet map[string]bool) (r } func (self *_runtime) declare(kind string, declarationList []_declaration) { + environment := self._executionContext(0).VariableEnvironment for _, _declaration := range declarationList { - self.localSet(_declaration.Name, UndefinedValue()) + name := _declaration.Name + //self.localSet(_declaration.Name, UndefinedValue()) if kind == "function" { value := self.evaluate(_declaration.Definition) self.localSet(_declaration.Name, value) + } else { + if !environment.HasBinding(name) { + environment.CreateMutableBinding(name, false) // TODO configurableBindings + environment.SetMutableBinding(name, UndefinedValue(), false) // TODO strict + } } } }