using System.Reflection;
using System.Reflection.Emit;
using System.Text;
-
-#if NET_4_0
using System.Linq;
using SLE = System.Linq.Expressions;
-#endif
//
// This is an user operator expression, automatically created during
mg.EmitCall (ec, arguments);
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
return SLE.Expression.Call ((MethodInfo) mg, Arguments.MakeExpression (arguments, ctx));
}
-#endif
public MethodGroupExpr Method {
get { return mg; }
if (expr_type == TypeManager.uint32_type) {
UIntLiteral uil = e as UIntLiteral;
if (uil != null) {
- if (uil.Value == 2147483648)
+ if (uil.Value == int.MaxValue + (uint) 1)
return new IntLiteral (int.MinValue, e.Location);
return new LongLiteral (-uil.Value, e.Location);
}
throw new NotImplementedException (oper.ToString ());
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
var expr = Expr.MakeExpression (ctx);
return is_checked ? SLE.Expression.NegateChecked (expr) : SLE.Expression.Negate (expr);
case Operator.LogicalNot:
return SLE.Expression.Not (expr);
+#if NET_4_0
case Operator.OnesComplement:
return SLE.Expression.OnesComplement (expr);
+#endif
default:
throw new NotImplementedException (Oper.ToString ());
}
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
return expr;
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
var le = left.MakeExpression (ctx);
throw new NotImplementedException (oper.ToString ());
}
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
concat.Emit (ec);
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
if (arguments.Count != 2)
var concat = TypeManager.string_type.GetMethod ("Concat", new[] { typeof (object), typeof (object) });
return SLE.Expression.Add (arguments[0].Expr.MakeExpression (ctx), arguments[1].Expr.MakeExpression (ctx), concat);
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
} else {
FieldExpr fe = left as FieldExpr;
if (fe != null)
- element = AttributeTester.GetFixedBuffer (fe.FieldInfo).ElementType;
+ element = ((FixedFieldSpec) (fe.Spec)).ElementType;
else
element = op_type;
}
target.expr = expr.Clone (clonectx);
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
return MakeExpression (ctx, mg.InstanceExpression, (MethodInfo) mg, arguments);
var instance_expr = instance == null ? null : instance.MakeExpression (ctx);
return SLE.Expression.Call (instance_expr, mi, Arguments.MakeExpression (args, ctx));
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
}
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
return SLE.Expression.New ((ConstructorInfo) method, Arguments.MakeExpression (Arguments, ctx));
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
Expr.EmitBranchable (ec, target, on_true);
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
using (ctx.With (BuilderContext.Options.AllCheckStateFlags, true)) {
return Expr.MakeExpression (ctx);
}
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
FieldExpr fe = Expr as FieldExpr;
if (fe != null) {
- IFixedBuffer ff = AttributeTester.GetFixedBuffer (fe.FieldInfo);
+ var ff = fe.Spec as FixedFieldSpec;
if (ff != null) {
return MakePointerAccess (ec, ff.ElementType);
}
ea.Expr.MakeExpression (ctx),
Arguments.MakeExpression (ea.Arguments, ctx));
}
+#endif
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
ea.Expr.MakeExpression (ctx),
Arguments.MakeExpression (ea.Arguments, ctx));
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
SLE.Expression.Call (instance_expr.MakeExpression (ctx), set, args),
value [0]);
}
+#endif
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
var args = Arguments.MakeExpression (arguments, ctx);
return SLE.Expression.Call (instance_expr.MakeExpression (ctx), get, args);
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{
return TypeManager.CSharpSignature (method);
}
-#if NET_4_0
public override SLE.Expression MakeExpression (BuilderContext ctx)
{
return SLE.Expression.Convert (source.MakeExpression (ctx), type, method);
}
-#endif
public override void MutateHoistedGenericType (AnonymousMethodStorey storey)
{