From e61fc44c3d102c4bad0cd565dd9aaceb5e6a125a Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 2 Oct 2012 23:01:04 +0000 Subject: [PATCH] [Doc parse]: SUpport for message in deprecated/unavailable attribute going iinto XML document. llvm-svn: 165066 --- clang/bindings/xml/comment-xml-schema.rng | 8 ++++++-- .../Inputs/CommentXML/valid-deprecated-attr.xml | 2 +- .../Inputs/CommentXML/valid-unavailable-attr.xml | 3 ++- .../Index/annotate-comments-availability-attrs.cpp | 6 +++--- clang/tools/libclang/CXComment.cpp | 24 +++++++++++++++++----- 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/clang/bindings/xml/comment-xml-schema.rng b/clang/bindings/xml/comment-xml-schema.rng index 4197bc8..9cf9c3c 100644 --- a/clang/bindings/xml/comment-xml-schema.rng +++ b/clang/bindings/xml/comment-xml-schema.rng @@ -326,13 +326,17 @@ - + + + - + + + diff --git a/clang/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml b/clang/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml index 5452b93..194720b 100644 --- a/clang/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml +++ b/clang/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml @@ -2,5 +2,5 @@ aaa Aaa. -true +since OS X 10.6 diff --git a/clang/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml b/clang/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml index 342ce44..5811c34 100644 --- a/clang/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml +++ b/clang/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml @@ -2,5 +2,6 @@ aaa Aaa. -true +Since iOS 4.0 + diff --git a/clang/test/Index/annotate-comments-availability-attrs.cpp b/clang/test/Index/annotate-comments-availability-attrs.cpp index cc3af07..5a7e600 100644 --- a/clang/test/Index/annotate-comments-availability-attrs.cpp +++ b/clang/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=[cfunction_availabilityc:@F@cfunction_availability#I#d#arg10in ZZZ d1out xxx not for iOStrue8.09.010.0 use availability_test] +// CHECK: annotate-comments-availability-attrs.cpp:8:6: FunctionDecl=cfunction_availability:{{.*}} FullCommentAsXML=[cfunction_availabilityc:@F@cfunction_availability#I#d#arg10in ZZZ d1out xxx not for iOS8.09.010.0 use availability_test] /** @@ -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=[depc:@F@dep#I#d#arg10in ZZZ d1out xxx true +// CHECK: annotate-comments-availability-attrs.cpp:19:6: FunctionDecl=dep:{{.*}} FullCommentAsXML=[depc:@F@dep#I#d#arg10in ZZZ d1out xxx /** @@ -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=[unvc:@F@unv#I#arg10in ZZZ true +// CHECK: annotate-comments-availability-attrs.cpp:27:6: FunctionDecl=unv:{{.*}} FullCommentAsXML=[unvc:@F@unv#I#arg10in ZZZ diff --git a/clang/tools/libclang/CXComment.cpp b/clang/tools/libclang/CXComment.cpp index a0a5512..c0e5bc2 100644 --- a/clang/tools/libclang/CXComment.cpp +++ b/clang/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(Attrs[i]); if (!AA) { - if (isa(Attrs[i])) - Result << "true"; - else if (isa(Attrs[i])) - Result << "true"; + if (const DeprecatedAttr *DA = dyn_cast(Attrs[i])) { + if (DA->getMessage().empty()) + Result << ""; + else { + Result << "" + << DA->getMessage() + << ""; + } + } + else if (const UnavailableAttr *UA = dyn_cast(Attrs[i])) { + if (UA->getMessage().empty()) + Result << ""; + else { + Result << "" + << UA->getMessage() + << ""; + } + } continue; } @@ -1220,7 +1234,7 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) { } // 'unavailable' attribute. if (AA->getUnavailable()) - Result << "true"; + Result << ""; Result << ""; } } -- 2.7.4