private object EvaluateSetExpression(SetExpression expr) { var obj = Evaluate(expr.Object); var instance = obj as LoxInstance; if (instance == null) { throw new RuntimeError(expr.Name, "Only instances have fields"); } var value = Evaluate(expr.Value); instance.Set(expr.Name, value); return(value); }
private void ResolveSetExpression(SetExpression expr) { Resolve(expr.Value); Resolve(expr.Object); }