]> granicus.if.org Git - clang/commitdiff
Do not crash when dumping the objc_bridge_related attribute when its optional argumen...
authorAaron Ballman <aaron@aaronballman.com>
Mon, 30 Nov 2015 15:25:34 +0000 (15:25 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Mon, 30 Nov 2015 15:25:34 +0000 (15:25 +0000)
Patch thanks to Joe Ranieri!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@254303 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/Attr.td
test/Misc/ast-dump-attr.cpp
utils/TableGen/ClangAttrEmitter.cpp

index 1281c3f477554746d117f218e251f07c3c04252d..c761aa9451aeb5f9099cc4dbf47713eaf2d5affe 100644 (file)
@@ -1087,8 +1087,8 @@ def ObjCBridgeRelated : InheritableAttr {
   let Spellings = [GNU<"objc_bridge_related">];
   let Subjects = SubjectList<[Record], ErrorDiag>;
   let Args = [IdentifierArgument<"RelatedClass">,
-          IdentifierArgument<"ClassMethod">,
-          IdentifierArgument<"InstanceMethod">];
+          IdentifierArgument<"ClassMethod", 1>,
+          IdentifierArgument<"InstanceMethod", 1>];
   let HasCustomParsing = 1;
   let Documentation = [Undocumented];
 }
index ed6d1f5781da0478634530a03392e994d2284c46..e0575cb18d8903e2def15eb4804552cee3d1e8b1 100644 (file)
@@ -150,3 +150,7 @@ void f() {
   // CHECK: DeprecatedAttr
 }
 }
+
+struct __attribute__((objc_bridge_related(NSParagraphStyle,,))) TestBridgedRef;
+// CHECK: CXXRecordDecl{{.*}} struct TestBridgedRef
+// CHECK-NEXT: ObjCBridgeRelatedAttr{{.*}} NSParagraphStyle
index 0c2857649811c517ad45032fc106bebd41f72a5c..09d7aee3c33ca965a58d152a62143e96c2ac0b45 100644 (file)
@@ -279,6 +279,8 @@ namespace {
         OS << "    OS << \" \";\n";
         OS << "    dumpBareDeclRef(SA->get" << getUpperName() << "());\n"; 
       } else if (type == "IdentifierInfo *") {
+        if (isOptional())
+          OS << "    if (SA->get" << getUpperName() << "())\n  ";
         OS << "    OS << \" \" << SA->get" << getUpperName()
            << "()->getName();\n";
       } else if (type == "TypeSourceInfo *") {