diff --git a/ICSharpCode.Decompiler/CSharp/CallBuilder.cs b/ICSharpCode.Decompiler/CSharp/CallBuilder.cs index 796b1bffa..c29839b0c 100644 --- a/ICSharpCode.Decompiler/CSharp/CallBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/CallBuilder.cs @@ -714,10 +714,7 @@ namespace ICSharpCode.Decompiler.CSharp || a.AttributeType.IsKnownType(KnownAttribute.CallerFilePath) || a.AttributeType.IsKnownType(KnownAttribute.CallerLineNumber))) return false; - if (parameter.ConstantValue == null) - return arg.ResolveResult.ConstantValue == null; - arg = arg.ConvertTo(parameter.Type, expressionBuilder, allowImplicitConversion: true); - return parameter.ConstantValue.Equals(arg.ResolveResult.ConstantValue); + return object.Equals(parameter.ConstantValue, arg.ResolveResult.ConstantValue); } [Flags] diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs index 12f508bcd..a2cd90ef4 100644 --- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs @@ -2278,9 +2278,9 @@ namespace ICSharpCode.Decompiler.CSharp typeHint = NullableType.GetUnderlyingType(typeHint); // Convert to type hint, if this is possible without loss of accuracy if (typeHint.IsKnownType(KnownTypeCode.Boolean)) { - if (object.Equals(rr.ConstantValue, 0)) { + if (object.Equals(rr.ConstantValue, 0) || object.Equals(rr.ConstantValue, 0u)) { rr = new ConstantResolveResult(typeHint, false); - } else if (object.Equals(rr.ConstantValue, 1)) { + } else if (object.Equals(rr.ConstantValue, 1) || object.Equals(rr.ConstantValue, 1u)) { rr = new ConstantResolveResult(typeHint, true); } } else if (typeHint.Kind == TypeKind.Enum || typeHint.IsKnownType(KnownTypeCode.Char) || typeHint.IsCSharpSmallIntegerType()) {