Browse Source

Addressed feedback

pull/3425/head
ElektroKill 2 months ago
parent
commit
16600fa633
No known key found for this signature in database
GPG Key ID: EE4642374F9D2B4F
  1. 2
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/EnumTests.cs
  2. 14
      ICSharpCode.Decompiler/CSharp/TranslatedExpression.cs

2
ICSharpCode.Decompiler.Tests/TestCases/Pretty/EnumTests.cs

@ -149,7 +149,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -149,7 +149,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
Console.WriteLine();
}
if (value2 != (NoZero)0)
if (value2 != 0)
{
Console.WriteLine();
}

14
ICSharpCode.Decompiler/CSharp/TranslatedExpression.cs

@ -731,11 +731,23 @@ namespace ICSharpCode.Decompiler.CSharp @@ -731,11 +731,23 @@ namespace ICSharpCode.Decompiler.CSharp
.WithRR(new OperatorResolveResult(boolType, System.Linq.Expressions.ExpressionType.NotEqual,
this.ResolveResult, nullRef.ResolveResult));
}
else
else if (Type.Kind == TypeKind.Enum && Type.GetDefinition() is { } typeDef &&
typeDef.Fields.Any(f => f.GetConstantValue() is { } val && (ulong)CSharpPrimitiveCast.Cast(TypeCode.UInt64, val, false) == 0L))
{
var zero = expressionBuilder
.ConvertConstantValue(new ConstantResolveResult(Type, 0), allowImplicitConversion: true);
var op = negate ? BinaryOperatorType.Equality : BinaryOperatorType.InEquality;
return new BinaryOperatorExpression(Expression, op, zero.Expression)
.WithoutILInstruction()
.WithRR(new OperatorResolveResult(boolType, System.Linq.Expressions.ExpressionType.NotEqual,
this.ResolveResult, zero.ResolveResult));
}
else
{
var zero = new PrimitiveExpression(0)
.WithoutILInstruction()
.WithRR(new ConstantResolveResult(expressionBuilder.compilation.FindType(KnownTypeCode.Int32), 0));
var op = negate ? BinaryOperatorType.Equality : BinaryOperatorType.InEquality;
return new BinaryOperatorExpression(Expression, op, zero.Expression)
.WithoutILInstruction()
.WithRR(new OperatorResolveResult(boolType, System.Linq.Expressions.ExpressionType.NotEqual,

Loading…
Cancel
Save