Browse Source

Fixed enum constants.

pull/124/head
Daniel Grunwald 15 years ago
parent
commit
6c6dc0e36b
  1. 10
      ICSharpCode.Decompiler/Ast/AstBuilder.cs

10
ICSharpCode.Decompiler/Ast/AstBuilder.cs

@ -870,11 +870,17 @@ namespace ICSharpCode.Decompiler.Ast
astField.ReturnType = ConvertType(fieldDef.FieldType, fieldDef); astField.ReturnType = ConvertType(fieldDef.FieldType, fieldDef);
astField.Modifiers = ConvertModifiers(fieldDef); astField.Modifiers = ConvertModifiers(fieldDef);
if (fieldDef.HasConstant) { if (fieldDef.HasConstant) {
if (fieldDef.Constant == null) if (fieldDef.Constant == null) {
initializer.Initializer = new NullReferenceExpression(); initializer.Initializer = new NullReferenceExpression();
else } 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); initializer.Initializer = new PrimitiveExpression(fieldDef.Constant);
} }
}
}
ConvertAttributes(astField, fieldDef); ConvertAttributes(astField, fieldDef);
return astField; return astField;
} }

Loading…
Cancel
Save