private void SetErrorTarget(OperatorInfo info) { _rule.Target = _rule.MakeError( AstUtils.ComplexCallHelper( typeof(BinderOps).GetMethod("BadArgumentsForOperation"), ArrayUtils.Insert((Expression)Ast.Constant(info.Operator), _rule.Parameters) ) ); }
private static DynamicMetaObject MakeOperatorError(OperatorInfo info, DynamicMetaObject[] args) { return(new DynamicMetaObject( Expression.Throw( AstUtils.ComplexCallHelper( typeof(BinderOps).GetMethod("BadArgumentsForOperation"), ArrayUtils.Insert((Expression)AstUtils.Constant(info.Operator), DynamicUtils.GetExpressions(args)) ) ), BindingRestrictions.Combine(args) )); }
public override MSAst TransformCore(ScriptGenerator generator) { var target = Target; var type = (Type)null; var targetType = target as TypeExpression; MSAst transformedTarget; if (targetType != null) { type = targetType.Type; transformedTarget = MSAst.Constant(type, typeof(Type)); } else { transformedTarget = target.Transform(generator); } var method = Method; if (method != null) { return(MSAstUtil.ComplexCallHelper( (type != null) ? null : transformedTarget, method, Arguments.Select(o => o.Value.Transform(generator)).ToArray())); } if (type != null) { return(MSAst.Call( type, MethodName, TypeArguments.ResolvedTypes, _arguments.Transform(generator))); } return(MSAst.Call( transformedTarget, MethodName, TypeArguments.ResolvedTypes, _arguments.Transform(generator))); }