Browse Source

Fix hexadecimal format of flags enum member initializers.

pull/1930/head
Daniel Grunwald 6 years ago
parent
commit
9e82b95373
  1. 2
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
  2. 28
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PrimitiveExpression.cs

2
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -1422,7 +1422,7 @@ namespace ICSharpCode.Decompiler.CSharp
if (enumDec.Initializer is PrimitiveExpression primitive if (enumDec.Initializer is PrimitiveExpression primitive
&& initValue >= 0 && (decompilationContext.CurrentTypeDefinition.HasAttribute(KnownAttribute.Flags) && initValue >= 0 && (decompilationContext.CurrentTypeDefinition.HasAttribute(KnownAttribute.Flags)
|| (initValue > 9 && (unchecked(initValue & (initValue - 1)) == 0 || unchecked(initValue & (initValue + 1)) == 0)))) { || (initValue > 9 && (unchecked(initValue & (initValue - 1)) == 0 || unchecked(initValue & (initValue + 1)) == 0)))) {
primitive.SetValue(initValue, $"0x{initValue:X}"); primitive.Format = LiteralFormat.HexadecimalNumber;
} }
} }
enumDec.Attributes.AddRange(field.GetAttributes().Select(a => new AttributeSection(typeSystemAstBuilder.ConvertAttribute(a)))); enumDec.Attributes.AddRange(field.GetAttributes().Select(a => new AttributeSection(typeSystemAstBuilder.ConvertAttribute(a))));

28
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PrimitiveExpression.cs

@ -51,11 +51,9 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public static readonly object AnyValue = new object(); public static readonly object AnyValue = new object();
TextLocation startLocation; TextLocation startLocation;
public override TextLocation StartLocation { TextLocation endLocation;
get { public override TextLocation StartLocation => startLocation;
return startLocation; public override TextLocation EndLocation => endLocation;
}
}
internal void SetLocation(TextLocation startLocation, TextLocation endLocation) internal void SetLocation(TextLocation startLocation, TextLocation endLocation)
{ {
@ -64,18 +62,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.endLocation = endLocation; this.endLocation = endLocation;
} }
string literalValue;
TextLocation? endLocation;
public override TextLocation EndLocation {
get {
if (!endLocation.HasValue) {
endLocation = value is string ? AdvanceLocation (StartLocation, literalValue ?? "") :
new TextLocation (StartLocation.Line, StartLocation.Column + (literalValue ?? "").Length);
}
return endLocation.Value;
}
}
object value; object value;
LiteralFormat format; LiteralFormat format;
@ -87,14 +73,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
} }
} }
public void SetValue(object value, string literalValue)
{
if (value == null)
throw new ArgumentNullException();
ThrowIfFrozen();
this.value = value;
this.literalValue = literalValue;
}
public LiteralFormat Format { public LiteralFormat Format {
get { return format;} get { return format;}

Loading…
Cancel
Save