- if (t.IsSubclassOf (TypeManager.enum_type)) {
- Expression enum_member = MemberLookup (ec, t, "value__", false, loc);
- Type underlying_type = enum_member.Type;
+ if (decl_type.IsSubclassOf (TypeManager.enum_type)) {
+ Expression enum_member = MemberLookup (ec, decl_type, "value__",
+ false, loc);
+
+ Enum en = TypeManager.LookupEnum (decl_type);
+
+ Expression e;
+ if (en != null)
+ e = Literalize (o, en.UnderlyingType);
+ else
+ e = Literalize (o, enum_member.Type);