]> granicus.if.org Git - clang/commitdiff
[Doc parse]: SUpport for message in deprecated/unavailable
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 2 Oct 2012 23:01:04 +0000 (23:01 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 2 Oct 2012 23:01:04 +0000 (23:01 +0000)
attribute going iinto XML document.

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

bindings/xml/comment-xml-schema.rng
test/Index/Inputs/CommentXML/valid-deprecated-attr.xml
test/Index/Inputs/CommentXML/valid-unavailable-attr.xml
test/Index/annotate-comments-availability-attrs.cpp
tools/libclang/CXComment.cpp

index 4197bc83a58b45097894de96df18a2beda136e22..9cf9c3c63dba3e698876b64ba0f3a8cdc1ad209e 100644 (file)
 
   <define name="Deprecated">
     <element name="Deprecated">
-      <data type="boolean" />
+      <optional>
+        <data type="string" />
+      </optional>
     </element>
   </define>
 
   <define name="Unavailable">
     <element name="Unavailable">
-      <data type="boolean" />
+      <optional>
+        <data type="string" />
+      </optional>
     </element>
   </define>
 
index 5452b9394fa4d2cc285200de6c4d04105611bc04..194720b832fb928a8ed6fcfe75d92ca23fbfb827 100644 (file)
@@ -2,5 +2,5 @@
 <Function>
 <Name>aaa</Name>
 <Abstract><Para>Aaa.</Para></Abstract>
-<Deprecated>true</Deprecated>
+<Deprecated>since OS X 10.6</Deprecated>
 </Function>
index 342ce44a494f8022a3660adca1c61000f31758d5..5811c3427af87c179c5b74fe63366a835912e222 100644 (file)
@@ -2,5 +2,6 @@
 <Function>
 <Name>aaa</Name>
 <Abstract><Para>Aaa.</Para></Abstract>
-<Unavailable>true</Unavailable>
+<Deprecated>Since iOS 4.0</Deprecated>
+<Unavailable/>
 </Function>
index cc3af073ecc78be55afa3d9246f2d7bbec5daee0..5a7e6008e75ea5d89e8777086f1141a0c04e0db2 100644 (file)
@@ -9,7 +9,7 @@ void cfunction_availability(int arg1, double d) __attribute__((availability(maco
                                                 __attribute__((availability(ios,unavailable, message="not for iOS")));
 
 
-// CHECK: annotate-comments-availability-attrs.cpp:8:6: FunctionDecl=cfunction_availability:{{.*}} FullCommentAsXML=[<Function file="{{.*}}annotate-comments-availability-attrs.cpp" line="8" column="6"><Name>cfunction_availability</Name><USR>c:@F@cfunction_availability#I#d#</USR><Parameters><Parameter><Name>arg1</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter><Parameter><Name>d</Name><Index>1</Index><Direction isExplicit="1">out</Direction><Discussion><Para> xxx</Para></Discussion></Parameter></Parameters><Availability distribution="iOS"> <DeprecationSummary>not for iOS</DeprecationSummary><Unavailable>true</Unavailable></Availability><Availability distribution="OS X"><IntroducedInVersion>8.0</IntroducedInVersion><DeprecatedInVersion>9.0</DeprecatedInVersion><RemovedAfterVersion>10.0</RemovedAfterVersion> <DeprecationSummary>use availability_test</DeprecationSummary></Availability></Function>]
+// CHECK: annotate-comments-availability-attrs.cpp:8:6: FunctionDecl=cfunction_availability:{{.*}} FullCommentAsXML=[<Function file="{{.*}}annotate-comments-availability-attrs.cpp" line="8" column="6"><Name>cfunction_availability</Name><USR>c:@F@cfunction_availability#I#d#</USR><Parameters><Parameter><Name>arg1</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter><Parameter><Name>d</Name><Index>1</Index><Direction isExplicit="1">out</Direction><Discussion><Para> xxx</Para></Discussion></Parameter></Parameters><Availability distribution="iOS"> <DeprecationSummary>not for iOS</DeprecationSummary><Unavailable/></Availability><Availability distribution="OS X"><IntroducedInVersion>8.0</IntroducedInVersion><DeprecatedInVersion>9.0</DeprecatedInVersion><RemovedAfterVersion>10.0</RemovedAfterVersion> <DeprecationSummary>use availability_test</DeprecationSummary></Availability></Function>]
 
 
 /**
@@ -18,7 +18,7 @@ void cfunction_availability(int arg1, double d) __attribute__((availability(maco
  */
 void dep(int arg1, double d) __attribute__((deprecated));
 
-// CHECK: annotate-comments-availability-attrs.cpp:19:6: FunctionDecl=dep:{{.*}} FullCommentAsXML=[<Function file="{{.*}}annotate-comments-availability-attrs.cpp" line="19" column="6"><Name>dep</Name><USR>c:@F@dep#I#d#</USR><Parameters><Parameter><Name>arg1</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter><Parameter><Name>d</Name><Index>1</Index><Direction isExplicit="1">out</Direction><Discussion><Para> xxx </Para></Discussion></Parameter></Parameters><Deprecated>true</Deprecated></Function>
+// CHECK: annotate-comments-availability-attrs.cpp:19:6: FunctionDecl=dep:{{.*}} FullCommentAsXML=[<Function file="{{.*}}annotate-comments-availability-attrs.cpp" line="19" column="6"><Name>dep</Name><USR>c:@F@dep#I#d#</USR><Parameters><Parameter><Name>arg1</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter><Parameter><Name>d</Name><Index>1</Index><Direction isExplicit="1">out</Direction><Discussion><Para> xxx </Para></Discussion></Parameter></Parameters><Deprecated/></Function>
 
 
 /**
@@ -26,4 +26,4 @@ void dep(int arg1, double d) __attribute__((deprecated));
  */
 void unv(int arg1) __attribute__((unavailable));
 
-// CHECK: annotate-comments-availability-attrs.cpp:27:6: FunctionDecl=unv:{{.*}} FullCommentAsXML=[<Function file="{{.*}}annotate-comments-availability-attrs.cpp" line="27" column="6"><Name>unv</Name><USR>c:@F@unv#I#</USR><Parameters><Parameter><Name>arg1</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters><Unavailable>true</Unavailable></Function>
+// CHECK: annotate-comments-availability-attrs.cpp:27:6: FunctionDecl=unv:{{.*}} FullCommentAsXML=[<Function file="{{.*}}annotate-comments-availability-attrs.cpp" line="27" column="6"><Name>unv</Name><USR>c:@F@unv#I#</USR><Parameters><Parameter><Name>arg1</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters><Unavailable/></Function>
index a0a5512814a559bbafcde86ba17454f0bedc6329..c0e5bc2721731f57599602044c6ee0e531bfd3c6 100644 (file)
@@ -1176,10 +1176,24 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
     for (unsigned i = 0, e = Attrs.size(); i != e; i++) {
       const AvailabilityAttr *AA = dyn_cast<AvailabilityAttr>(Attrs[i]);
       if (!AA) {
-        if (isa<DeprecatedAttr>(Attrs[i]))
-          Result << "<Deprecated>true</Deprecated>";
-        else if (isa<UnavailableAttr>(Attrs[i]))
-          Result << "<Unavailable>true</Unavailable>";
+        if (const DeprecatedAttr *DA = dyn_cast<DeprecatedAttr>(Attrs[i])) {
+          if (DA->getMessage().empty())
+            Result << "<Deprecated/>";
+          else {
+            Result << "<Deprecated>"
+                   << DA->getMessage()
+                   << "</Deprecated>";
+          }
+        }
+        else if (const UnavailableAttr *UA = dyn_cast<UnavailableAttr>(Attrs[i])) {
+          if (UA->getMessage().empty())
+            Result << "<Unavailable/>";
+          else {
+            Result << "<Unavailable>"
+                   << UA->getMessage()
+                   << "</Unavailable>";
+          }
+        }
         continue;
       }
 
@@ -1220,7 +1234,7 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
       }
       // 'unavailable' attribute.
       if (AA->getUnavailable())
-        Result << "<Unavailable>true</Unavailable>";
+        Result << "<Unavailable/>";
       Result << "</Availability>";
     }
   }