public Expression Compile(AssignCompiler component) { var instance = component.Getter; var methodName = component.Operator; var argument = new InvocationArgument(ArgumentKind.Simple, component.Right); var call = CompilerUtils.Call(instance, methodName, component.Visibility, argument); return(component.Setter(call)); }
public Expression Compile(AssignCompiler component) { var getter = Variable(typeof(iObject), "getter"); var setter = component.Setter(component.Right); var condition = CompilerUtils.ToBool(getter); return(Block( typeof(iObject), new[] { getter }, Assign(getter, component.Getter), MakeCondition(condition, getter, setter) )); }
public Expression Compile(AssignCompiler component) => component.Setter(component.Right);