diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-10-02 23:01:04 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-10-02 23:01:04 +0000 |
commit | 8da68b8b03d72314b67ea44568e013ef79d93b40 (patch) | |
tree | 451bd5c1d6407724a047208d729a129376f85f2a | |
parent | 86e7b7e4421eacdd5ae610a0fb2d8ea5dec5e644 (diff) | |
download | clang-8da68b8b03d72314b67ea44568e013ef79d93b40.tar.gz clang-8da68b8b03d72314b67ea44568e013ef79d93b40.tar.bz2 clang-8da68b8b03d72314b67ea44568e013ef79d93b40.tar.xz |
[Doc parse]: SUpport for message in deprecated/unavailable
attribute going iinto XML document.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165066 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | bindings/xml/comment-xml-schema.rng | 8 | ||||
-rw-r--r-- | test/Index/Inputs/CommentXML/valid-deprecated-attr.xml | 2 | ||||
-rw-r--r-- | test/Index/Inputs/CommentXML/valid-unavailable-attr.xml | 3 | ||||
-rw-r--r-- | test/Index/annotate-comments-availability-attrs.cpp | 6 | ||||
-rw-r--r-- | tools/libclang/CXComment.cpp | 24 |
5 files changed, 31 insertions, 12 deletions
diff --git a/bindings/xml/comment-xml-schema.rng b/bindings/xml/comment-xml-schema.rng index 4197bc83a5..9cf9c3c63d 100644 --- a/bindings/xml/comment-xml-schema.rng +++ b/bindings/xml/comment-xml-schema.rng @@ -326,13 +326,17 @@ <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> diff --git a/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml b/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml index 5452b9394f..194720b832 100644 --- a/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml +++ b/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml @@ -2,5 +2,5 @@ <Function> <Name>aaa</Name> <Abstract><Para>Aaa.</Para></Abstract> -<Deprecated>true</Deprecated> +<Deprecated>since OS X 10.6</Deprecated> </Function> diff --git a/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml b/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml index 342ce44a49..5811c3427a 100644 --- a/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml +++ b/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml @@ -2,5 +2,6 @@ <Function> <Name>aaa</Name> <Abstract><Para>Aaa.</Para></Abstract> -<Unavailable>true</Unavailable> +<Deprecated>Since iOS 4.0</Deprecated> +<Unavailable/> </Function> diff --git a/test/Index/annotate-comments-availability-attrs.cpp b/test/Index/annotate-comments-availability-attrs.cpp index cc3af073ec..5a7e6008e7 100644 --- a/test/Index/annotate-comments-availability-attrs.cpp +++ b/test/Index/annotate-comments-availability-attrs.cpp @@ -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> diff --git a/tools/libclang/CXComment.cpp b/tools/libclang/CXComment.cpp index a0a5512814..c0e5bc2721 100644 --- a/tools/libclang/CXComment.cpp +++ b/tools/libclang/CXComment.cpp @@ -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>"; } } |