Skip to content
Snippets Groups Projects
Commit ca723a25 authored by Fariborz Jahanian's avatar Fariborz Jahanian
Browse files

[SDK modernizer] Patch to fix type of the typed enums when

migrating to NS_ENUM typedef. rdar://19994496


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231036 91177308-0d34-0410-b5e6-96231b3b80d8
parent dd12a444
No related branches found
No related tags found
No related merge requests found
......@@ -776,12 +776,12 @@ static void rewriteToNSMacroDecl(ASTContext &Ctx,
const TypedefDecl *TypedefDcl,
const NSAPI &NS, edit::Commit &commit,
bool IsNSIntegerType) {
QualType EnumUnderlyingT = EnumDcl->getPromotionType();
assert(!EnumUnderlyingT.isNull()
QualType DesignatedEnumType = EnumDcl->getIntegerType();
assert(!DesignatedEnumType.isNull()
&& "rewriteToNSMacroDecl - underlying enum type is null");
PrintingPolicy Policy(Ctx.getPrintingPolicy());
std::string TypeString = EnumUnderlyingT.getAsString(Policy);
std::string TypeString = DesignatedEnumType.getAsString(Policy);
std::string ClassString = IsNSIntegerType ? "NS_ENUM(" : "NS_OPTIONS(";
ClassString += TypeString;
ClassString += ", ";
......
......@@ -379,3 +379,10 @@ typedef enum : unsigned long long {
ll3,
ll4
} MyEnumunsignedlonglong;
// rdar://19994496
typedef enum : int8_t {int8_one} MyOneEnum;
typedef enum : int16_t {
int16_t_one,
int16_t_two } Myint16_tEnum;
......@@ -358,3 +358,10 @@ typedef NS_ENUM(unsigned long long, MyEnumunsignedlonglong) {
ll3,
ll4
};
// rdar://19994496
typedef NS_ENUM(int8_t, MyOneEnum) {int8_one};
typedef NS_ENUM(int16_t, Myint16_tEnum) {
int16_t_one,
int16_t_two };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment