Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit 8da68b8

Browse files
author
Fariborz Jahanian
committed
[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
1 parent 86e7b7e commit 8da68b8

File tree

5 files changed

+31
-12
lines changed

5 files changed

+31
-12
lines changed

bindings/xml/comment-xml-schema.rng

+6-2
Original file line numberDiff line numberDiff line change
@@ -326,13 +326,17 @@
326326

327327
<define name="Deprecated">
328328
<element name="Deprecated">
329-
<data type="boolean" />
329+
<optional>
330+
<data type="string" />
331+
</optional>
330332
</element>
331333
</define>
332334

333335
<define name="Unavailable">
334336
<element name="Unavailable">
335-
<data type="boolean" />
337+
<optional>
338+
<data type="string" />
339+
</optional>
336340
</element>
337341
</define>
338342

test/Index/Inputs/CommentXML/valid-deprecated-attr.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
<Function>
33
<Name>aaa</Name>
44
<Abstract><Para>Aaa.</Para></Abstract>
5-
<Deprecated>true</Deprecated>
5+
<Deprecated>since OS X 10.6</Deprecated>
66
</Function>

test/Index/Inputs/CommentXML/valid-unavailable-attr.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
<Function>
33
<Name>aaa</Name>
44
<Abstract><Para>Aaa.</Para></Abstract>
5-
<Unavailable>true</Unavailable>
5+
<Deprecated>Since iOS 4.0</Deprecated>
6+
<Unavailable/>
67
</Function>

test/Index/annotate-comments-availability-attrs.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ void cfunction_availability(int arg1, double d) __attribute__((availability(maco
99
__attribute__((availability(ios,unavailable, message="not for iOS")));
1010

1111

12-
// 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>]
12+
// 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>]
1313

1414

1515
/**
@@ -18,12 +18,12 @@ void cfunction_availability(int arg1, double d) __attribute__((availability(maco
1818
*/
1919
void dep(int arg1, double d) __attribute__((deprecated));
2020

21-
// 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>
21+
// 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>
2222

2323

2424
/**
2525
* \param[in] arg1 ZZZ
2626
*/
2727
void unv(int arg1) __attribute__((unavailable));
2828

29-
// 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>
29+
// 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>

tools/libclang/CXComment.cpp

+19-5
Original file line numberDiff line numberDiff line change
@@ -1176,10 +1176,24 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
11761176
for (unsigned i = 0, e = Attrs.size(); i != e; i++) {
11771177
const AvailabilityAttr *AA = dyn_cast<AvailabilityAttr>(Attrs[i]);
11781178
if (!AA) {
1179-
if (isa<DeprecatedAttr>(Attrs[i]))
1180-
Result << "<Deprecated>true</Deprecated>";
1181-
else if (isa<UnavailableAttr>(Attrs[i]))
1182-
Result << "<Unavailable>true</Unavailable>";
1179+
if (const DeprecatedAttr *DA = dyn_cast<DeprecatedAttr>(Attrs[i])) {
1180+
if (DA->getMessage().empty())
1181+
Result << "<Deprecated/>";
1182+
else {
1183+
Result << "<Deprecated>"
1184+
<< DA->getMessage()
1185+
<< "</Deprecated>";
1186+
}
1187+
}
1188+
else if (const UnavailableAttr *UA = dyn_cast<UnavailableAttr>(Attrs[i])) {
1189+
if (UA->getMessage().empty())
1190+
Result << "<Unavailable/>";
1191+
else {
1192+
Result << "<Unavailable>"
1193+
<< UA->getMessage()
1194+
<< "</Unavailable>";
1195+
}
1196+
}
11831197
continue;
11841198
}
11851199

@@ -1220,7 +1234,7 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
12201234
}
12211235
// 'unavailable' attribute.
12221236
if (AA->getUnavailable())
1223-
Result << "<Unavailable>true</Unavailable>";
1237+
Result << "<Unavailable/>";
12241238
Result << "</Availability>";
12251239
}
12261240
}

0 commit comments

Comments
 (0)