]> granicus.if.org Git - clang/commitdiff
[SDK modernizer] Patch to fix type of the typed enums when
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 2 Mar 2015 23:58:02 +0000 (23:58 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 2 Mar 2015 23:58:02 +0000 (23:58 +0000)
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
test/ARCMT/objcmt-ns-macros.m
test/ARCMT/objcmt-ns-macros.m.result

index ddb802e2596a4251f77c602a0484f48bed036725..98b3955182def143930554fb46979aa8b06d2ee9 100644 (file)
@@ -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 += ", ";
index 795b94a8256cbc630fe83a8c2f195d59de4292ff..5bc390be58e1b217bedb65e6ca824b5605287b63 100644 (file)
@@ -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;
index 094c4441ef6c4bea15820e39ce65bc026dd7d596..bcc865ce0f667957b4ad38cab8caf5af0142a6ca 100644 (file)
@@ -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 };