public override void VisitUnaryExpression(UnaryExpression node) { this.VisitUnaryExpression(node); if (node.get_Operator() == UnaryOperator.Negate || node.get_Operator() == 10 && node.get_Operand().get_HasType()) { V_0 = node.get_Operand().get_ExpressionType().Resolve(); if (V_0 != null && V_0.get_IsEnum()) { node.set_Operand(new ExplicitCastExpression(node.get_Operand(), this.GetEnumUnderlyingType(V_0), null)); node.DecideExpressionType(); } } return; }
public override void VisitUnaryExpression(UnaryExpression node) { base.VisitUnaryExpression(node); if (node.Operator == UnaryOperator.Negate || node.Operator == UnaryOperator.UnaryPlus) { if (node.Operand.HasType) { TypeDefinition supposedEnum = node.Operand.ExpressionType.Resolve(); if (supposedEnum != null && supposedEnum.IsEnum) { node.Operand = new CastExpression(node.Operand, GetEnumUnderlyingType(supposedEnum), null); node.DecideExpressionType(); } } } }