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); } }
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); } }
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); } }
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); } }
private void EmitLogical(FleeILGenerator ilg, IServiceProvider services) { MyChild.Emit(ilg, services); ilg.Emit(OpCodes.Ldc_I4_0); ilg.Emit(OpCodes.Ceq); }
private void EmitLogical(YaleIlGenerator ilg, ExpressionContext context) { MyChild.Emit(ilg, context); ilg.Emit(OpCodes.Ldc_I4_0); ilg.Emit(OpCodes.Ceq); }