diff options
Diffstat (limited to 'Godeps/_workspace/src/github.com/robertkrimen/otto/type_reference.go')
-rw-r--r-- | Godeps/_workspace/src/github.com/robertkrimen/otto/type_reference.go | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/type_reference.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/type_reference.go deleted file mode 100644 index fd770c6f4..000000000 --- a/Godeps/_workspace/src/github.com/robertkrimen/otto/type_reference.go +++ /dev/null @@ -1,103 +0,0 @@ -package otto - -type _reference interface { - invalid() bool // IsUnresolvableReference - getValue() Value // getValue - putValue(Value) string // PutValue - delete() bool -} - -// PropertyReference - -type _propertyReference struct { - name string - strict bool - base *_object - runtime *_runtime - at _at -} - -func newPropertyReference(rt *_runtime, base *_object, name string, strict bool, at _at) *_propertyReference { - return &_propertyReference{ - runtime: rt, - name: name, - strict: strict, - base: base, - at: at, - } -} - -func (self *_propertyReference) invalid() bool { - return self.base == nil -} - -func (self *_propertyReference) getValue() Value { - if self.base == nil { - panic(self.runtime.panicReferenceError("'%s' is not defined", self.name, self.at)) - } - return self.base.get(self.name) -} - -func (self *_propertyReference) putValue(value Value) string { - if self.base == nil { - return self.name - } - self.base.put(self.name, value, self.strict) - return "" -} - -func (self *_propertyReference) delete() bool { - if self.base == nil { - // TODO Throw an error if strict - return true - } - return self.base.delete(self.name, self.strict) -} - -// ArgumentReference - -func newArgumentReference(runtime *_runtime, base *_object, name string, strict bool, at _at) *_propertyReference { - if base == nil { - panic(hereBeDragons()) - } - return newPropertyReference(runtime, base, name, strict, at) -} - -type _stashReference struct { - name string - strict bool - base _stash -} - -func (self *_stashReference) invalid() bool { - return false // The base (an environment) will never be nil -} - -func (self *_stashReference) getValue() Value { - return self.base.getBinding(self.name, self.strict) -} - -func (self *_stashReference) putValue(value Value) string { - self.base.setValue(self.name, value, self.strict) - return "" -} - -func (self *_stashReference) delete() bool { - if self.base == nil { - // This should never be reached, but just in case - return false - } - return self.base.deleteBinding(self.name) -} - -// getIdentifierReference - -func getIdentifierReference(runtime *_runtime, stash _stash, name string, strict bool, at _at) _reference { - if stash == nil { - return newPropertyReference(runtime, nil, name, strict, at) - } - if stash.hasBinding(name) { - return stash.newReference(name, strict, at) - } - return getIdentifierReference(runtime, stash.outer(), name, strict, at) -} |