aboutsummaryrefslogblamecommitdiffstats
path: root/Godeps/_workspace/src/github.com/obscuren/otto/cmpl_function.go
blob: 0c8a9df1420a8376e0bce1f9040a3e6d014521d9 (plain) (tree)













































                                                                                                                                                                      
package otto

// _cmpl_nodeCallFunction
type _cmpl_nodeCallFunction struct {
    node             *_nodeFunctionLiteral
    scopeEnvironment _environment // Can be either Lexical or Variable
}

func new_nodeCallFunction(node *_nodeFunctionLiteral, scopeEnvironment _environment) *_cmpl_nodeCallFunction {
    self := &_cmpl_nodeCallFunction{
        node: node,
    }
    self.scopeEnvironment = scopeEnvironment
    return self
}

func (self _cmpl_nodeCallFunction) Dispatch(function *_object, environment *_functionEnvironment, runtime *_runtime, this Value, argumentList []Value, _ bool) Value {
    return runtime.cmpl_call_nodeFunction(function, environment, self.node, this, argumentList)
}

func (self _cmpl_nodeCallFunction) ScopeEnvironment() _environment {
    return self.scopeEnvironment
}

func (self _cmpl_nodeCallFunction) Source(object *_object) string {
    return self.node.source
}

func (self0 _cmpl_nodeCallFunction) clone(clone *_clone) _callFunction {
    return _cmpl_nodeCallFunction{
        node:             self0.node,
        scopeEnvironment: clone.environment(self0.scopeEnvironment),
    }
}

// ---

func (runtime *_runtime) newNodeFunctionObject(node *_nodeFunctionLiteral, scopeEnvironment _environment) *_object {
    self := runtime.newClassObject("Function")
    self.value = _functionObject{
        call:      new_nodeCallFunction(node, scopeEnvironment),
        construct: defaultConstructFunction,
    }
    self.defineProperty("length", toValue_int(len(node.parameterList)), 0000, false)
    return self
}