Example #1
0
 public override void Emit(FleeILGenerator ilg, IServiceProvider services)
 {
     if (object.ReferenceEquals(MyChild.ResultType, typeof(bool)))
     {
         this.EmitLogical(ilg, services);
     }
     else
     {
         MyChild.Emit(ilg, services);
         ilg.Emit(OpCodes.Not);
     }
 }
Example #2
0
 public override void Emit(YaleIlGenerator ilGenerator, ExpressionContext context)
 {
     if (ReferenceEquals(MyChild.ResultType, typeof(bool)))
     {
         EmitLogical(ilGenerator, context);
     }
     else
     {
         MyChild.Emit(ilGenerator, context);
         ilGenerator.Emit(OpCodes.Not);
     }
 }
Example #3
0
        public override void Emit(YaleIlGenerator ilGenerator, ExpressionContext context)
        {
            var resultType = ResultType;

            MyChild.Emit(ilGenerator, context);
            ImplicitConverter.EmitImplicitConvert(MyChild.ResultType, resultType, ilGenerator);

            var methodInfo = Utility.GetSimpleOverloadedOperator(UnaryNegation, resultType, resultType);

            if (methodInfo == null)
            {
                ilGenerator.Emit(OpCodes.Neg);
            }
            else
            {
                ilGenerator.Emit(OpCodes.Call, methodInfo);
            }
        }
Example #4
0
        public override void Emit(FleeILGenerator ilg, IServiceProvider services)
        {
            Type resultType = this.ResultType;

            MyChild.Emit(ilg, services);
            ImplicitConverter.EmitImplicitConvert(MyChild.ResultType, resultType, ilg);

            MethodInfo mi = Utility.GetSimpleOverloadedOperator("UnaryNegation", resultType, resultType);

            if (mi == null)
            {
                ilg.Emit(OpCodes.Neg);
            }
            else
            {
                ilg.Emit(OpCodes.Call, mi);
            }
        }
Example #5
0
 private void EmitLogical(FleeILGenerator ilg, IServiceProvider services)
 {
     MyChild.Emit(ilg, services);
     ilg.Emit(OpCodes.Ldc_I4_0);
     ilg.Emit(OpCodes.Ceq);
 }
Example #6
0
 private void EmitLogical(YaleIlGenerator ilg, ExpressionContext context)
 {
     MyChild.Emit(ilg, context);
     ilg.Emit(OpCodes.Ldc_I4_0);
     ilg.Emit(OpCodes.Ceq);
 }