public override JavaScriptObject Evaluate(Scope scope, JavaScriptObject thisObject) { Node left = this.LeftOperand; JavaScriptObject value = this.RightOperand.Evaluate(scope, thisObject); if (left is VariableNode) { String name = ((VariableNode)left).Name; if (isLocal) { scope.SetLocalVariable(name, value); } else { scope.SetVariable(name, value); } } else if (left is LookupNode) { ((LookupNode)left).Set(value, scope, thisObject); } else if (left is PropertyNode) { String name = ((PropertyNode)left).Name; thisObject.SetProperty(name, value); } else { throw new InvalidTypeException("Left hand of assignment must be a variable.", left.Position); } return(value); }
public override JavaScriptObject Evaluate(Scope scope, JavaScriptObject thisObject) { Node left = this.LeftOperand; JavaScriptObject value = this.RightOperand.Evaluate(scope, thisObject); if (left is VariableNode) { String name = ((VariableNode)left).Name; if (isLocal) { scope.SetLocalVariable(name, value); } else { scope.SetVariable(name, value); } } else if (left is LookupNode) { ((LookupNode)left).Set(value, scope, thisObject); } else if (left is PropertyNode) { String name = ((PropertyNode)left).Name; thisObject.SetProperty(name, value); } else { throw new InvalidTypeException("Left hand of assignment must be a variable.", left.Position); } return value; }