Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 1 | // RUN: rm -rf %t |
| 2 | // RUN: mkdir %t |
| 3 | // RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out |
| 4 | // RUN: FileCheck %s < %t/out |
Fariborz Jahanian | 749ace6 | 2012-10-11 23:52:50 +0000 | [diff] [blame] | 5 | // Test to search overridden methods for documentation when overriding method has none. rdar://12378793 |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 6 | |
| 7 | // Ensure that XML we generate is not invalid. |
| 8 | // RUN: FileCheck %s -check-prefix=WRONG < %t/out |
| 9 | // WRONG-NOT: CommentXMLInvalid |
| 10 | |
| 11 | @protocol P |
| 12 | - (void)METH:(id)PPP; |
| 13 | @end |
| 14 | |
| 15 | @interface Root<P> |
| 16 | /** |
| 17 | * \param[in] AAA ZZZ |
| 18 | */ |
| 19 | - (void)METH:(id)AAA; |
| 20 | @end |
| 21 | |
Fariborz Jahanian | 154120c | 2012-12-20 19:54:13 +0000 | [diff] [blame] | 22 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Declaration>- (void)METH:(id)AAA;</Declaration><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters></Function>] |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 23 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 24 | @interface Sub : Root |
| 25 | @end |
| 26 | |
| 27 | @interface Sub (CAT) |
| 28 | - (void)METH:(id)BBB; |
| 29 | @end |
| 30 | |
Fariborz Jahanian | 154120c | 2012-12-20 19:54:13 +0000 | [diff] [blame] | 31 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Declaration>- (void)METH:(id)BBB;</Declaration><Parameters><Parameter><Name>BBB</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters></Function>] |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 32 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 33 | @implementation Sub(CAT) |
| 34 | - (void)METH:(id)III {} |
| 35 | @end |
| 36 | |
Fariborz Jahanian | 154120c | 2012-12-20 19:54:13 +0000 | [diff] [blame] | 37 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Declaration>- (void)METH:(id)III;</Declaration><Parameters><Parameter><Name>III</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters></Function>] |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 38 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 39 | @interface Redec : Root |
| 40 | @end |
| 41 | |
| 42 | @interface Redec() |
| 43 | /** |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 44 | * \param[in] AAA input value |
| 45 | * \param[out] CCC output value is int |
| 46 | * \param[in] BBB 2nd input value is double |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 47 | */ |
| 48 | - (void)EXT_METH:(id)AAA : (double)BBB : (int)CCC; |
| 49 | @end |
| 50 | |
Fariborz Jahanian | 154120c | 2012-12-20 19:54:13 +0000 | [diff] [blame] | 51 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>EXT_METH:::</Name><USR>c:objc(cs)Redec(im)EXT_METH:::</USR><Declaration>- (void)EXT_METH:(id)AAA:(double)BBB:(int)CCC;</Declaration><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> input value </Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Direction isExplicit="1">in</Direction><Discussion><Para> 2nd input value is double </Para></Discussion></Parameter><Parameter><Name>CCC</Name><Index>2</Index><Direction isExplicit="1">out</Direction><Discussion><Para> output value is int </Para></Discussion></Parameter></Parameters></Function>] |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 52 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 53 | @implementation Redec |
| 54 | - (void)EXT_METH:(id)PPP : (double)QQQ : (int)RRR {} |
| 55 | @end |
| 56 | |
Fariborz Jahanian | 154120c | 2012-12-20 19:54:13 +0000 | [diff] [blame] | 57 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>EXT_METH:::</Name><USR>c:objc(cs)Redec(im)EXT_METH:::</USR><Declaration>- (void)EXT_METH:(id)PPP:(double)QQQ:(int)RRR;</Declaration><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> input value </Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Direction isExplicit="1">in</Direction><Discussion><Para> 2nd input value is double </Para></Discussion></Parameter><Parameter><Name>RRR</Name><Index>2</Index><Direction isExplicit="1">out</Direction><Discussion><Para> output value is int </Para></Discussion></Parameter></Parameters></Function>] |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 58 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 59 | struct Base { |
| 60 | /// \brief Does something. |
| 61 | /// \param AAA argument to foo_pure. |
| 62 | virtual void foo_pure(int AAA) = 0; |
| 63 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 64 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_pure</Name><USR>c:@S@Base@F@foo_pure#I#</USR><Declaration>virtual void foo_pure(int AAA) = 0</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to foo_pure.</Para></Discussion></Parameter></Parameters></Function>] |
| 65 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 66 | /// \brief Does something. |
| 67 | /// \param BBB argument to defined virtual. |
| 68 | virtual void foo_inline(int BBB) {} |
| 69 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 70 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_inline</Name><USR>c:@S@Base@F@foo_inline#I#</USR><Declaration>virtual void foo_inline(int BBB)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>BBB</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to defined virtual.</Para></Discussion></Parameter></Parameters></Function>] |
| 71 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 72 | /// \brief Does something. |
| 73 | /// \param CCC argument to undefined virtual. |
| 74 | virtual void foo_outofline(int CCC); |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 75 | |
| 76 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_outofline</Name><USR>c:@S@Base@F@foo_outofline#I#</USR><Declaration>virtual void foo_outofline(int CCC)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>CCC</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to undefined virtual.</Para></Discussion></Parameter></Parameters></Function>] |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 77 | }; |
| 78 | |
| 79 | void Base::foo_outofline(int RRR) {} |
| 80 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 81 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="12"><Name>foo_outofline</Name><USR>c:@S@Base@F@foo_outofline#I#</USR><Declaration>void foo_outofline(int RRR)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>RRR</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to undefined virtual.</Para></Discussion></Parameter></Parameters></Function>] |
| 82 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 83 | struct Derived : public Base { |
| 84 | virtual void foo_pure(int PPP); |
| 85 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 86 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_pure</Name><USR>c:@S@Base@F@foo_pure#I#</USR><Declaration>virtual void foo_pure(int PPP)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to foo_pure.</Para></Discussion></Parameter></Parameters></Function>] |
| 87 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 88 | virtual void foo_inline(int QQQ) {} |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 89 | |
| 90 | // CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_inline</Name><USR>c:@S@Base@F@foo_inline#I#</USR><Declaration>virtual void foo_inline(int QQQ)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>QQQ</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to defined virtual.</Para></Discussion></Parameter></Parameters></Function>] |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 91 | }; |
| 92 | |
| 93 | /// \brief Does something. |
| 94 | /// \param DDD a value. |
| 95 | void foo(int DDD); |
| 96 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 97 | // CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@F@foo#I#</USR><Declaration>void foo(int DDD)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>DDD</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> a value.</Para></Discussion></Parameter></Parameters></Function>] |
| 98 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 99 | void foo(int SSS) {} |
| 100 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 101 | // CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@F@foo#I#</USR><Declaration>void foo(int SSS)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>SSS</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> a value.</Para></Discussion></Parameter></Parameters></Function>] |
| 102 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 103 | /// \brief Does something. |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 104 | /// \param EEE argument to function decl. |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 105 | void foo1(int EEE); |
| 106 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 107 | // CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo1</Name><USR>c:@F@foo1#I#</USR><Declaration>void foo1(int EEE)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>EEE</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to function decl.</Para></Discussion></Parameter></Parameters></Function>] |
| 108 | |
Fariborz Jahanian | bf967be | 2012-10-10 18:34:52 +0000 | [diff] [blame] | 109 | void foo1(int TTT); |
| 110 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 111 | // CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo1</Name><USR>c:@F@foo1#I#</USR><Declaration>void foo1(int TTT)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>TTT</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to function decl.</Para></Discussion></Parameter></Parameters></Function>] |
| 112 | |
Fariborz Jahanian | 6553c68 | 2012-10-15 18:58:50 +0000 | [diff] [blame] | 113 | /// \brief Documentation |
| 114 | /// \tparam BBB The type, silly. |
| 115 | /// \tparam AAA The type, silly as well. |
| 116 | template<typename AAA, typename BBB> |
| 117 | void foo(AAA, BBB); |
| 118 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 119 | // CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@FT@>2#T#Tfoo#t0.0#t0.1#</USR><Declaration>template <typename AAA, typename BBB> void foo(AAA, BBB)</Declaration><Abstract><Para> Documentation </Para></Abstract><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para> The type, silly as well.</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para> The type, silly. </Para></Discussion></Parameter></TemplateParameters></Function>] |
| 120 | |
Fariborz Jahanian | 6553c68 | 2012-10-15 18:58:50 +0000 | [diff] [blame] | 121 | template<typename PPP, typename QQQ> |
| 122 | void foo(PPP, QQQ); |
| 123 | |
Dmitri Gribenko | b164af6 | 2012-11-15 18:37:27 +0000 | [diff] [blame] | 124 | // CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@FT@>2#T#Tfoo#t0.0#t0.1#</USR><Declaration>template <typename PPP, typename QQQ> void foo(PPP, QQQ)</Declaration><Abstract><Para> Documentation </Para></Abstract><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para> The type, silly as well.</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para> The type, silly. </Para></Discussion></Parameter></TemplateParameters></Function>] |
Fariborz Jahanian | 6553c68 | 2012-10-15 18:58:50 +0000 | [diff] [blame] | 125 | |