From 6c6dc0e36b11a0dd227e2b9f2c2ae7ea26b56410 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 9 Apr 2011 18:52:42 +0200 Subject: [PATCH] Fixed enum constants. --- ICSharpCode.Decompiler/Ast/AstBuilder.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ICSharpCode.Decompiler/Ast/AstBuilder.cs b/ICSharpCode.Decompiler/Ast/AstBuilder.cs index 0bc23663d..e5b1d09fb 100644 --- a/ICSharpCode.Decompiler/Ast/AstBuilder.cs +++ b/ICSharpCode.Decompiler/Ast/AstBuilder.cs @@ -870,10 +870,16 @@ namespace ICSharpCode.Decompiler.Ast astField.ReturnType = ConvertType(fieldDef.FieldType, fieldDef); astField.Modifiers = ConvertModifiers(fieldDef); if (fieldDef.HasConstant) { - if (fieldDef.Constant == null) + if (fieldDef.Constant == null) { initializer.Initializer = new NullReferenceExpression(); - else - initializer.Initializer = new PrimitiveExpression(fieldDef.Constant); + } else { + TypeCode c = Type.GetTypeCode(fieldDef.Constant.GetType()); + if (c >= TypeCode.SByte && c <= TypeCode.UInt64) { + initializer.Initializer = MakePrimitive((long)CSharpPrimitiveCast.Cast(TypeCode.Int64, fieldDef.Constant, false), fieldDef.FieldType); + } else { + initializer.Initializer = new PrimitiveExpression(fieldDef.Constant); + } + } } ConvertAttributes(astField, fieldDef); return astField;