From ca723a257dcb231ec1b81d6c30cc2b7cad6d1bed Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Mon, 2 Mar 2015 23:58:02 +0000 Subject: [PATCH] [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 --- lib/ARCMigrate/ObjCMT.cpp | 6 +++--- test/ARCMT/objcmt-ns-macros.m | 7 +++++++ test/ARCMT/objcmt-ns-macros.m.result | 7 +++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index ddb802e259..98b3955182 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/lib/ARCMigrate/ObjCMT.cpp @@ -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 += ", "; diff --git a/test/ARCMT/objcmt-ns-macros.m b/test/ARCMT/objcmt-ns-macros.m index 795b94a825..5bc390be58 100644 --- a/test/ARCMT/objcmt-ns-macros.m +++ b/test/ARCMT/objcmt-ns-macros.m @@ -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; diff --git a/test/ARCMT/objcmt-ns-macros.m.result b/test/ARCMT/objcmt-ns-macros.m.result index 094c4441ef..bcc865ce0f 100644 --- a/test/ARCMT/objcmt-ns-macros.m.result +++ b/test/ARCMT/objcmt-ns-macros.m.result @@ -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 }; -- 2.40.0