diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-10-02 20:05:47 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-10-02 20:05:47 +0000 |
commit | 2a46533633441176e93b484739a0a27e07150b63 (patch) | |
tree | d9b7377c86f3fa1d5eb3e752a9be6ad04477324b | |
parent | 180d9d98fb51c7f6719d56a73bfd09400502986c (diff) |
[Doc parsing]: Add available and deprecated attribute info
to XML output. // rdar://12378879
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165039 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | bindings/xml/comment-xml-schema.rng | 22 | ||||
-rw-r--r-- | test/Index/Inputs/CommentXML/valid-deprecated-attr.xml | 6 | ||||
-rw-r--r-- | test/Index/Inputs/CommentXML/valid-unavailable-attr.xml | 6 | ||||
-rw-r--r-- | test/Index/annotate-comments-availability-attrs.cpp | 17 | ||||
-rw-r--r-- | test/Index/comment-xml-schema.c | 2 | ||||
-rw-r--r-- | tools/libclang/CXComment.cpp | 7 |
6 files changed, 56 insertions, 4 deletions
diff --git a/bindings/xml/comment-xml-schema.rng b/bindings/xml/comment-xml-schema.rng index 1a2eb16441..4197bc83a5 100644 --- a/bindings/xml/comment-xml-schema.rng +++ b/bindings/xml/comment-xml-schema.rng @@ -82,6 +82,12 @@ <zeroOrMore> <ref name="Availability" /> </zeroOrMore> + <zeroOrMore> + <ref name="Deprecated" /> + </zeroOrMore> + <zeroOrMore> + <ref name="Unavailable" /> + </zeroOrMore> <optional> <ref name="ResultDiscussion" /> </optional> @@ -313,13 +319,23 @@ </element> </optional> <optional> - <element name="Unavailable"> - <data type="boolean" /> - </element> + <ref name="Unavailable" /> </optional> </element> </define> + <define name="Deprecated"> + <element name="Deprecated"> + <data type="boolean" /> + </element> + </define> + + <define name="Unavailable"> + <element name="Unavailable"> + <data type="boolean" /> + </element> + </define> + <define name="Abstract"> <element name="Abstract"> <zeroOrMore> diff --git a/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml b/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml new file mode 100644 index 0000000000..5452b9394f --- /dev/null +++ b/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<Function> +<Name>aaa</Name> +<Abstract><Para>Aaa.</Para></Abstract> +<Deprecated>true</Deprecated> +</Function> diff --git a/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml b/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml new file mode 100644 index 0000000000..342ce44a49 --- /dev/null +++ b/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<Function> +<Name>aaa</Name> +<Abstract><Para>Aaa.</Para></Abstract> +<Unavailable>true</Unavailable> +</Function> diff --git a/test/Index/annotate-comments-availability-attrs.cpp b/test/Index/annotate-comments-availability-attrs.cpp index 6fb99a1b5c..cc3af073ec 100644 --- a/test/Index/annotate-comments-availability-attrs.cpp +++ b/test/Index/annotate-comments-availability-attrs.cpp @@ -10,3 +10,20 @@ void cfunction_availability(int arg1, double d) __attribute__((availability(maco // 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>] + + +/** + * \param[in] arg1 ZZZ + * \param[out] d xxx + */ +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> + + +/** + * \param[in] arg1 ZZZ + */ +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> diff --git a/test/Index/comment-xml-schema.c b/test/Index/comment-xml-schema.c index dad6c8a694..7e7e3315f1 100644 --- a/test/Index/comment-xml-schema.c +++ b/test/Index/comment-xml-schema.c @@ -13,6 +13,8 @@ // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-09.xml // // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-availability-attr-01.xml +// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-deprecated-attr.xml +// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-unavailable-attr.xml // // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-class-01.xml // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-class-02.xml diff --git a/tools/libclang/CXComment.cpp b/tools/libclang/CXComment.cpp index 1e0679f22a..a0a5512814 100644 --- a/tools/libclang/CXComment.cpp +++ b/tools/libclang/CXComment.cpp @@ -1175,8 +1175,13 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) { const AttrVec &Attrs = DI->ThisDecl->getAttrs(); for (unsigned i = 0, e = Attrs.size(); i != e; i++) { const AvailabilityAttr *AA = dyn_cast<AvailabilityAttr>(Attrs[i]); - if (!AA) + if (!AA) { + if (isa<DeprecatedAttr>(Attrs[i])) + Result << "<Deprecated>true</Deprecated>"; + else if (isa<UnavailableAttr>(Attrs[i])) + Result << "<Unavailable>true</Unavailable>"; continue; + } // 'availability' attribute. Result << "<Availability"; |