is_enum_class = true;
if (!IsValueType (name_space, name) && !IsEnumType (name_space, name) &&
- is_value_class && !is_enum_class && (attr & PEAPI.TypeAttr.Sealed) == 0) {
+ is_value_class && (attr & PEAPI.TypeAttr.Sealed) == 0) {
attr |= PEAPI.TypeAttr.Sealed;
}
{
ArrayList fielddef_list = new ArrayList ();
foreach (FieldDef fielddef in field_list) {
+ if (is_enum_class && fielddef.Name == "value__") {
+ fielddef.Attributes |= PEAPI.FieldAttr.SpecialName | PEAPI.FieldAttr.RTSpecialName;
+ }
+
fielddef.Define (code_gen, classdef);
fielddef_list.Add (fielddef.PeapiFieldDef);
}
| class_attr K_NESTED K_FAMANDASSEM { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }\r
| class_attr K_NESTED K_FAMORASSEM { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }\r
| class_attr K_VALUE { is_value_class = true; }\r
- | class_attr K_ENUM { is_enum_class = true; is_value_class = true;\r
- }\r
+ | class_attr K_ENUM { is_enum_class = true; }\r
| class_attr K_INTERFACE { $$ = (TypeAttr)$1 | TypeAttr.Interface; }\r
| class_attr K_SEALED { $$ = (TypeAttr)$1 | TypeAttr.Sealed; }\r
| class_attr K_ABSTRACT { $$ = (TypeAttr)$1 | TypeAttr.Abstract; }\r