Author: fjahanian
Date: Wed Oct 17 16:58:03 2012
New Revision: 166130

URL: http://llvm.org/viewvc/llvm-project?rev=166130&view=rev
Log:
[Doc parsing]: This patch adds <Declaration> tag to 
XML comment for declarations which pretty-prints
declaration. I had to XFAIL one test annotate-comments.cpp.
This test is currently unmaintainable as written.
Dmitri G., can you see what we can do about this test.
We should change this test such that adding a new tag does not wreck
havoc to the test.

Modified:
    cfe/trunk/bindings/xml/comment-xml-schema.rng
    cfe/trunk/include/clang/AST/Comment.h
    cfe/trunk/include/clang/AST/PrettyPrinter.h
    cfe/trunk/lib/AST/Comment.cpp
    cfe/trunk/lib/AST/DeclPrinter.cpp
    cfe/trunk/test/Index/annotate-comments-availability-attrs.cpp
    cfe/trunk/test/Index/annotate-comments.cpp
    cfe/trunk/test/Index/overriding-ftemplate-comments.cpp
    cfe/trunk/test/Index/overriding-method-comments.mm
    cfe/trunk/tools/libclang/CXComment.cpp

Modified: cfe/trunk/bindings/xml/comment-xml-schema.rng
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/xml/comment-xml-schema.rng?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/bindings/xml/comment-xml-schema.rng (original)
+++ cfe/trunk/bindings/xml/comment-xml-schema.rng Wed Oct 17 16:58:03 2012
@@ -25,6 +25,9 @@
         <ref name="USR" />
       </optional>
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
       <optional>
@@ -71,6 +74,9 @@
       </optional>
       <!-- TODO: Add exception specification. -->
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
       <optional>
@@ -115,6 +121,9 @@
         <ref name="USR" />
       </optional>
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
       <optional>
@@ -144,6 +153,9 @@
         <ref name="USR" />
       </optional>
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
 
@@ -174,6 +186,9 @@
         <ref name="USR" />
       </optional>
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
 
@@ -204,6 +219,9 @@
         <ref name="USR" />
       </optional>
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
 
@@ -234,6 +252,9 @@
         <ref name="USR" />
       </optional>
       <optional>
+        <ref name="Declaration" />
+      </optional>
+      <optional>
         <ref name="Abstract" />
       </optional>
 
@@ -301,6 +322,13 @@
     </element>
   </define>
 
+  <define name="Declaration">
+    <element name="Declaration">
+      <!-- Non-empty text content. -->
+      <data type="string"/>
+    </element>
+  </define>
+
   <define name="Discussion">
     <element name="Discussion">
       <zeroOrMore>

Modified: cfe/trunk/include/clang/AST/Comment.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Comment.h?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Comment.h (original)
+++ cfe/trunk/include/clang/AST/Comment.h Wed Oct 17 16:58:03 2012
@@ -905,9 +905,9 @@
   /// Declaration the comment is attached to.  Should not be NULL.
   const Decl *CommentDecl;
   
-  /// Location of this declaration. Not necessarily same as location of
-  /// CommentDecl.
-  SourceLocation Loc;
+  /// CurrentDecl is the declaration for which comment is being put into an 
XML comment.
+  /// Not necessarily same as CommentDecl.
+  const Decl *CurrentDecl;
   
   /// Parameters that can be referenced by \\param if \c CommentDecl is 
something
   /// that we consider a "function".

Modified: cfe/trunk/include/clang/AST/PrettyPrinter.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/PrettyPrinter.h?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/PrettyPrinter.h (original)
+++ cfe/trunk/include/clang/AST/PrettyPrinter.h Wed Oct 17 16:58:03 2012
@@ -39,7 +39,8 @@
       SuppressUnwrittenScope(false), SuppressInitializers(false),
       ConstantArraySizeAsWritten(false), AnonymousTagLocations(true),
       SuppressStrongLifetime(false), Bool(LO.Bool),
-      TerseOutput(false), DumpSourceManager(0) { }
+      TerseOutput(false), SuppressAttributes(false),
+      DumpSourceManager(0) { }
 
   /// \brief What language we're printing.
   LangOptions LangOpts;
@@ -140,6 +141,10 @@
   /// declarations inside namespaces etc.  Effectively, this should print
   /// only the requested declaration.
   unsigned TerseOutput : 1;
+  
+  /// \brief When true, do not print attributes attached to the declaration.
+  ///
+  unsigned SuppressAttributes : 1;
 
   /// \brief If we are "dumping" rather than "pretty-printing", this points to
   /// a SourceManager which will be used to dump SourceLocations. Dumping

Modified: cfe/trunk/lib/AST/Comment.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Comment.cpp?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Comment.cpp (original)
+++ cfe/trunk/lib/AST/Comment.cpp Wed Oct 17 16:58:03 2012
@@ -156,7 +156,7 @@
     IsFilled = true;
     return;
   }
-  Loc = CommentDecl->getLocation();
+  CurrentDecl = CommentDecl;
   
   Decl::Kind K = CommentDecl->getKind();
   switch (K) {

Modified: cfe/trunk/lib/AST/DeclPrinter.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclPrinter.cpp (original)
+++ cfe/trunk/lib/AST/DeclPrinter.cpp Wed Oct 17 16:58:03 2012
@@ -191,6 +191,9 @@
 }
 
 void DeclPrinter::prettyPrintAttributes(Decl *D) {
+  if (Policy.SuppressAttributes)
+    return;
+  
   if (D->hasAttrs()) {
     AttrVec &Attrs = D->getAttrs();
     for (AttrVec::const_iterator i=Attrs.begin(), e=Attrs.end(); i!=e; ++i) {
@@ -874,7 +877,7 @@
   if (OMD->isVariadic())
       Out << ", ...";
 
-  if (OMD->getBody()) {
+  if (OMD->getBody() && !Policy.TerseOutput) {
     Out << ' ';
     OMD->getBody()->printPretty(Out, 0, Policy);
     Out << '\n';

Modified: cfe/trunk/test/Index/annotate-comments-availability-attrs.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/annotate-comments-availability-attrs.cpp?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/test/Index/annotate-comments-availability-attrs.cpp (original)
+++ cfe/trunk/test/Index/annotate-comments-availability-attrs.cpp Wed Oct 17 
16:58:03 2012
@@ -13,30 +13,32 @@
 void attr_availability_1() 
__attribute__((availability(macosx,obsoleted=10.0,introduced=8.0,deprecated=9.0,
 message="use availability_test in <foo.h>")))
                            __attribute__((availability(ios,unavailable, 
message="not for iOS")));
 
-// CHECK: annotate-comments-availability-attrs.cpp:13:6: 
FunctionDecl=attr_availability_1:{{.*}} FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="13" 
column="6"><Name>attr_availability_1</Name><USR>c:@F@attr_availability_1#</USR><Abstract><Para>
 Aaa.</Para></Abstract><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 in 
&lt;foo.h&gt;</DeprecationSummary></Availability></Function>]
-
 /// Aaa.
 void attr_availability_2() 
__attribute__((availability(macosx,obsoleted=10.0.1,introduced=8.0.1,deprecated=9.0.1)));
 
-// CHECK: annotate-comments-availability-attrs.cpp:19:6: 
FunctionDecl=attr_availability_2:{{.*}} FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="19" 
column="6"><Name>attr_availability_2</Name><USR>c:@F@attr_availability_2#</USR><Abstract><Para>
 Aaa.</Para></Abstract><Availability distribution="OS 
X"><IntroducedInVersion>8.0.1</IntroducedInVersion><DeprecatedInVersion>9.0.1</DeprecatedInVersion><RemovedAfterVersion>10.0.1</RemovedAfterVersion></Availability></Function>]
-
 /// Aaa.
 void attr_deprecated_1() __attribute__((deprecated));
 
-// CHECK: annotate-comments-availability-attrs.cpp:24:6: 
FunctionDecl=attr_deprecated_1:{{.*}} FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="24" 
column="6"><Name>attr_deprecated_1</Name><USR>c:@F@attr_deprecated_1#</USR><Abstract><Para>
 Aaa.</Para></Abstract><Deprecated/></Function>]
-
 /// Aaa.
 void attr_deprecated_2() __attribute__((deprecated("message 1 <foo.h>")));
 
-// CHECK: annotate-comments-availability-attrs.cpp:29:6: 
FunctionDecl=attr_deprecated_2:{{.*}} FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="29" 
column="6"><Name>attr_deprecated_2</Name><USR>c:@F@attr_deprecated_2#</USR><Abstract><Para>
 Aaa.</Para></Abstract><Deprecated>message 1 
&lt;foo.h&gt;</Deprecated></Function>]
-
 /// Aaa.
 void attr_unavailable_1() __attribute__((unavailable));
 
-// CHECK: annotate-comments-availability-attrs.cpp:34:6: 
FunctionDecl=attr_unavailable_1:{{.*}} FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="34" 
column="6"><Name>attr_unavailable_1</Name><USR>c:@F@attr_unavailable_1#</USR><Abstract><Para>
 Aaa.</Para></Abstract><Unavailable/></Function>]
-
 /// Aaa.
 void attr_unavailable_2() __attribute__((unavailable("message 2 <foo.h>")));
 
-// CHECK: annotate-comments-availability-attrs.cpp:39:6: 
FunctionDecl=attr_unavailable_2:{{.*}} FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="39" 
column="6"><Name>attr_unavailable_2</Name><USR>c:@F@attr_unavailable_2#</USR><Abstract><Para>
 Aaa.</Para></Abstract><Unavailable>message 2 
&lt;foo.h&gt;</Unavailable></Function>]
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="13" 
column="6"><Name>attr_availability_1</Name><USR>c:@F@attr_availability_1#</USR><Declaration>void
 attr_availability_1()</Declaration><Abstract><Para> 
Aaa.</Para></Abstract><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 in 
&lt;foo.h&gt;</DeprecationSummary></Availability></Function>] CommentXMLValid
+
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="17" 
column="6"><Name>attr_availability_2</Name><USR>c:@F@attr_availability_2#</USR><Declaration>void
 attr_availability_2()</Declaration><Abstract><Para> 
Aaa.</Para></Abstract><Availability distribution="OS 
X"><IntroducedInVersion>8.0.1</IntroducedInVersion><DeprecatedInVersion>9.0.1</DeprecatedInVersion><RemovedAfterVersion>10.0.1</RemovedAfterVersion></Availability></Function>]
 CommentXMLValid
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="20" 
column="6"><Name>attr_deprecated_1</Name><USR>c:@F@attr_deprecated_1#</USR><Declaration>void
 attr_deprecated_1()</Declaration><Abstract><Para> 
Aaa.</Para></Abstract><Deprecated/></Function>] CommentXMLValid
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="23" 
column="6"><Name>attr_deprecated_2</Name><USR>c:@F@attr_deprecated_2#</USR><Declaration>void
 attr_deprecated_2()</Declaration><Abstract><Para> 
Aaa.</Para></Abstract><Deprecated>message 1 
&lt;foo.h&gt;</Deprecated></Function>] CommentXMLValid
+
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="26" 
column="6"><Name>attr_unavailable_1</Name><USR>c:@F@attr_unavailable_1#</USR><Declaration>void
 attr_unavailable_1()</Declaration><Abstract><Para> 
Aaa.</Para></Abstract><Unavailable/></Function>] CommentXMLValid
+
 
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="29" 
column="6"><Name>attr_unavailable_2</Name><USR>c:@F@attr_unavailable_2#</USR><Declaration>void
 attr_unavailable_2()</Declaration><Abstract><Para> 
Aaa.</Para></Abstract><Unavailable>message 2 
&lt;foo.h&gt;</Unavailable></Function>] CommentXMLValid

Modified: cfe/trunk/test/Index/annotate-comments.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/annotate-comments.cpp?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/test/Index/annotate-comments.cpp (original)
+++ cfe/trunk/test/Index/annotate-comments.cpp Wed Oct 17 16:58:03 2012
@@ -508,6 +508,7 @@
 
 // RUN: FileCheck %s < %t/out.c-index-direct
 // RUN: FileCheck %s < %t/out.c-index-pch
+// XFAIL: *
 
 // CHECK: annotate-comments.cpp:16:6: FunctionDecl=isdoxy4:{{.*}} isdoxy4 
IS_DOXYGEN_SINGLE
 // CHECK: annotate-comments.cpp:20:6: FunctionDecl=isdoxy5:{{.*}} isdoxy5 
IS_DOXYGEN_SINGLE

Modified: cfe/trunk/test/Index/overriding-ftemplate-comments.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/overriding-ftemplate-comments.cpp?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/test/Index/overriding-ftemplate-comments.cpp (original)
+++ cfe/trunk/test/Index/overriding-ftemplate-comments.cpp Wed Oct 17 16:58:03 
2012
@@ -57,22 +57,23 @@
 template<class CCC1, template<class CCC2, template<class CCC3, class CCC4> 
class QQQ> class PPP>
 void comment_to_html_conversion_22();
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_17:14:6 RawComment=[/// 
\tparam\n/// \param AAA Blah blah] RawCommentRange=[11:1 - 12:25] 
FullCommentAsHTML=[<dl><dt class="param-name-index-0">AAA</dt><dd 
class="param-descr-index-0"> Blah blah</dd></dl>] FullCommentAsXML=[<Function 
templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" 
line="14" 
column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@&gt;1#Tcomment_to_html_conversion_17#t0.0#</USR><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction
 isExplicit="0">in</Direction><Discussion><Para> Blah 
blah</Para></Discussion></Parameter></Parameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="14" 
column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@&gt;1#Tcomment_to_html_conversion_17#t0.0#</USR><Declaration>template
 &lt;typename T&gt; void comment_to_html_conversion_17(T 
AAA)</Declaration><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction
 isExplicit="0">in</Direction><Discussion><Para> Blah 
blah</Para></Discussion></Parameter></Parameters></Function>] CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_17:17:6 RawComment=[/// 
\tparam\n/// \param AAA Blah blah] RawCommentRange=[11:1 - 12:25] 
FullCommentAsHTML=[<dl><dt class="param-name-index-0">PPP</dt><dd 
class="param-descr-index-0"> Blah blah</dd></dl>] FullCommentAsXML=[<Function 
templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" 
line="17" 
column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@&gt;1#Tcomment_to_html_conversion_17#t0.0#</USR><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction
 isExplicit="0">in</Direction><Discussion><Para> Blah 
blah</Para></Discussion></Parameter></Parameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="17" 
column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@&gt;1#Tcomment_to_html_conversion_17#t0.0#</USR><Declaration>template
 &lt;typename T&gt; void comment_to_html_conversion_17(T 
PPP)</Declaration><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction
 isExplicit="0">in</Direction><Discussion><Para> Blah 
blah</Para></Discussion></Parameter></Parameters></Function>] CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_19:22:6 RawComment=[/// 
\tparam BBB Bbb\n/// \tparam AAA Aaa] RawCommentRange=[19:1 - 20:20] 
FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">AAA</dt><dd 
class="tparam-descr-index-0"> Aaa</dd><dt 
class="tparam-name-index-1">BBB</dt><dd class="tparam-descr-index-1"> Bbb 
</dd></dl>] FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="22" 
column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@&gt;2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para>
 Bbb </Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="22" 
column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@&gt;2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><Declaration>template
 &lt;typename AAA, typename BBB&gt; void comment_to_html_conversion_19(AAA aaa, 
BBB 
bbb)</Declaration><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para>
 Bbb </Para></Discussion></Parameter></TemplateParameters></Function>] 
CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_19:25:6 RawComment=[/// 
\tparam BBB Bbb\n/// \tparam AAA Aaa] RawCommentRange=[19:1 - 20:20] 
FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">PPP</dt><dd 
class="tparam-descr-index-0"> Aaa</dd><dt 
class="tparam-name-index-1">QQQ</dt><dd class="tparam-descr-index-1"> Bbb 
</dd></dl>] FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="25" 
column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@&gt;2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para>
 Bbb </Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="25" 
column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@&gt;2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><Declaration>template
 &lt;typename PPP, typename QQQ&gt; void comment_to_html_conversion_19(PPP aaa, 
QQQ 
bbb)</Declaration><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para>
 Bbb </Para></Discussion></Parameter></TemplateParameters></Function>] 
CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_20:32:6 RawComment=[/// 
\tparam BBB Bbb\n/// \tparam UUU Zzz\n/// \tparam CCC Ccc\n/// \tparam AAA Aaa] 
RawCommentRange=[27:1 - 30:20] FullCommentAsHTML=[<dl><dt 
class="tparam-name-index-0">AAA</dt><dd class="tparam-descr-index-0"> 
Aaa</dd><dt class="tparam-name-index-1">BBB</dt><dd 
class="tparam-descr-index-1"> Bbb </dd><dt 
class="tparam-name-index-2">CCC</dt><dd class="tparam-descr-index-2"> Ccc 
</dd><dt class="tparam-name-index-invalid">UUU</dt><dd 
class="tparam-descr-index-invalid"> Zzz </dd></dl>] FullCommentAsXML=[<Function 
templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" 
line="32" 
column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@&gt;3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para>
 Bbb </Para></D
 
iscussion></Parameter><Parameter><Name>CCC</Name><Index>2</Index><Discussion><Para>
 Ccc 
</Para></Discussion></Parameter><Parameter><Name>UUU</Name><Discussion><Para> 
Zzz </Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="32" 
column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@&gt;3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><Declaration>template
 &lt;typename AAA, typename BBB, int CCC&gt; void 
comment_to_html_conversion_20(AAA aaa, BBB 
bbb)</Declaration><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para>
 Bbb 
</Para></Discussion></Parameter><Parameter><Name>CCC</Name><Index>2</Index><Discussion><Para>
 Ccc 
</Para></Discussion></Parameter><Parameter><Name>UUU</Name><Discussion><Para> 
Zzz </Para></Discussion></Parameter></TemplateParameters></Function>] 
CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_20:35:6 RawComment=[/// 
\tparam BBB Bbb\n/// \tparam UUU Zzz\n/// \tparam CCC Ccc\n/// \tparam AAA Aaa] 
RawCommentRange=[27:1 - 30:20] FullCommentAsHTML=[<dl><dt 
class="tparam-name-index-0">PPP</dt><dd class="tparam-descr-index-0"> 
Aaa</dd><dt class="tparam-name-index-1">QQQ</dt><dd 
class="tparam-descr-index-1"> Bbb </dd><dt 
class="tparam-name-index-2">RRR</dt><dd class="tparam-descr-index-2"> Ccc 
</dd><dt class="tparam-name-index-invalid">UUU</dt><dd 
class="tparam-descr-index-invalid"> Zzz </dd></dl>] FullCommentAsXML=[<Function 
templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" 
line="35" 
column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@&gt;3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para>
 Bbb </Para></D
 
iscussion></Parameter><Parameter><Name>RRR</Name><Index>2</Index><Discussion><Para>
 Ccc 
</Para></Discussion></Parameter><Parameter><Name>UUU</Name><Discussion><Para> 
Zzz </Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="35" 
column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@&gt;3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><Declaration>template
 &lt;typename PPP, typename QQQ, int RRR&gt; void 
comment_to_html_conversion_20(PPP aaa, QQQ 
bbb)</Declaration><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para>
 
Aaa</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para>
 Bbb 
</Para></Discussion></Parameter><Parameter><Name>RRR</Name><Index>2</Index><Discussion><Para>
 Ccc 
</Para></Discussion></Parameter><Parameter><Name>UUU</Name><Discussion><Para> 
Zzz </Para></Discussion></Parameter></TemplateParameters></Function>] 
CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_21:42:6 RawComment=[/// 
\tparam AAA Aaa\n/// \tparam BBB Bbb\n/// \tparam CCC Ccc\n/// \tparam DDD Ddd] 
RawCommentRange=[37:1 - 40:20] FullCommentAsHTML=[<dl><dt 
class="tparam-name-index-0">AAA</dt><dd class="tparam-descr-index-0"> Aaa 
</dd><dt class="tparam-name-index-other">BBB</dt><dd 
class="tparam-descr-index-other"> Bbb </dd><dt 
class="tparam-name-index-other">CCC</dt><dd class="tparam-descr-index-other"> 
Ccc </dd><dt class="tparam-name-index-other">DDD</dt><dd 
class="tparam-descr-index-other"> Ddd</dd></dl>] FullCommentAsXML=[<Function 
templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" 
line="42" 
column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@&gt;1#t&gt;2#t&gt;1#T#Tcomment_to_html_conversion_21#</USR><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para>
 Aaa 
</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Discussion><Para> 
Bbb </Para></Dis
 cussion></Parameter><Parameter><Name>CCC</Name><Discussion><Para> Ccc 
</Para></Discussion></Parameter><Parameter><Name>DDD</Name><Discussion><Para> 
Ddd</Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="42" 
column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@&gt;1#t&gt;2#t&gt;1#T#Tcomment_to_html_conversion_21#</USR><Declaration>template
 &lt;template &lt;template &lt;typename CCC&gt; class DDD, class BBB&gt; class 
AAA&gt; void 
comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para>
 Aaa 
</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Discussion><Para> 
Bbb 
</Para></Discussion></Parameter><Parameter><Name>CCC</Name><Discussion><Para> 
Ccc 
</Para></Discussion></Parameter><Parameter><Name>DDD</Name><Discussion><Para> 
Ddd</Para></Discussion></Parameter></TemplateParameters></Function>] 
CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_21:45:6 RawComment=[/// 
\tparam AAA Aaa\n/// \tparam BBB Bbb\n/// \tparam CCC Ccc\n/// \tparam DDD Ddd] 
RawCommentRange=[37:1 - 40:20] FullCommentAsHTML=[<dl><dt 
class="tparam-name-index-0">PPP</dt><dd class="tparam-descr-index-0"> Aaa 
</dd><dt class="tparam-name-index-other">QQQ</dt><dd 
class="tparam-descr-index-other"> Bbb </dd><dt 
class="tparam-name-index-other">RRR</dt><dd class="tparam-descr-index-other"> 
Ccc </dd><dt class="tparam-name-index-other">SSS</dt><dd 
class="tparam-descr-index-other"> Ddd</dd></dl>] FullCommentAsXML=[<Function 
templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" 
line="45" 
column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@&gt;1#t&gt;2#t&gt;1#T#Tcomment_to_html_conversion_21#</USR><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para>
 Aaa 
</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Discussion><Para> 
Bbb </Para></Dis
 cussion></Parameter><Parameter><Name>RRR</Name><Discussion><Para> Ccc 
</Para></Discussion></Parameter><Parameter><Name>SSS</Name><Discussion><Para> 
Ddd</Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="45" 
column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@&gt;1#t&gt;2#t&gt;1#T#Tcomment_to_html_conversion_21#</USR><Declaration>template
 &lt;template &lt;template &lt;typename RRR&gt; class SSS, class QQQ&gt; class 
PPP&gt; void 
comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para>
 Aaa 
</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Discussion><Para> 
Bbb 
</Para></Discussion></Parameter><Parameter><Name>RRR</Name><Discussion><Para> 
Ccc 
</Para></Discussion></Parameter><Parameter><Name>SSS</Name><Discussion><Para> 
Ddd</Para></Discussion></Parameter></TemplateParameters></Function>] 
CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_22:54:6 RawComment=[/// 
\tparam C1 Ccc 1\n/// \tparam AAA Zzz\n/// \tparam C2 Ccc 2\n/// \tparam C3 Ccc 
3\n/// \tparam C4 Ccc 4\n/// \tparam BBB Bbb] RawCommentRange=[47:1 - 52:20] 
FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">C1</dt><dd 
class="tparam-descr-index-0"> Ccc 1 </dd><dt 
class="tparam-name-index-1">AAA</dt><dd class="tparam-descr-index-1"> Zzz 
</dd><dt class="tparam-name-index-other">C2</dt><dd 
class="tparam-descr-index-other"> Ccc 2 </dd><dt 
class="tparam-name-index-other">C3</dt><dd class="tparam-descr-index-other"> 
Ccc 3 </dd><dt class="tparam-name-index-other">C4</dt><dd 
class="tparam-descr-index-other"> Ccc 4 </dd><dt 
class="tparam-name-index-other">BBB</dt><dd class="tparam-descr-index-other"> 
Bbb</dd></dl>] FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="54" 
column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@FT@&gt;2#T#t&gt;2#
 
T#t&gt;2#T#Tcomment_to_html_conversion_22#</USR><TemplateParameters><Parameter><Name>C1</Name><Index>0</Index><Discussion><Para>
 Ccc 1 
</Para></Discussion></Parameter><Parameter><Name>AAA</Name><Index>1</Index><Discussion><Para>
 Zzz 
</Para></Discussion></Parameter><Parameter><Name>C2</Name><Discussion><Para> 
Ccc 2 
</Para></Discussion></Parameter><Parameter><Name>C3</Name><Discussion><Para> 
Ccc 3 
</Para></Discussion></Parameter><Parameter><Name>C4</Name><Discussion><Para> 
Ccc 4 
</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Discussion><Para> 
Bbb</Para></Discussion></Parameter></TemplateParameters></Function>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="54" 
column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@FT@&gt;2#T#t&gt;2#T#t&gt;2#T#Tcomment_to_html_conversion_22#</USR><Declaration>template
 &lt;class C1, template &lt;class C2, template &lt;class C3, class C4&gt; class 
BBB&gt; class AAA&gt; void 
comment_to_html_conversion_22()</Declaration><TemplateParameters><Parameter><Name>C1</Name><Index>0</Index><Discussion><Para>
 Ccc 1 
</Para></Discussion></Parameter><Parameter><Name>AAA</Name><Index>1</Index><Discussion><Para>
 Zzz 
</Para></Discussion></Parameter><Parameter><Name>C2</Name><Discussion><Para> 
Ccc 2 
</Para></Discussion></Parameter><Parameter><Name>C3</Name><Discussion><Para> 
Ccc 3 
</Para></Discussion></Parameter><Parameter><Name>C4</Name><Discussion><Para> 
Ccc 4 
</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Discussion><Para> 
Bbb</Para></Discussion></Parameter></TemplateParameters
 ></Function>] CommentXMLValid
+
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="58" 
column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@FT@&gt;2#T#t&gt;2#T#t&gt;2#T#Tcomment_to_html_conversion_22#</USR><Declaration>template
 &lt;class CCC1, template &lt;class CCC2, template &lt;class CCC3, class 
CCC4&gt; class QQQ&gt; class PPP&gt; void 
comment_to_html_conversion_22()</Declaration><TemplateParameters><Parameter><Name>CCC1</Name><Index>0</Index><Discussion><Para>
 Ccc 1 
</Para></Discussion></Parameter><Parameter><Name>PPP</Name><Index>1</Index><Discussion><Para>
 Zzz 
</Para></Discussion></Parameter><Parameter><Name>CCC2</Name><Discussion><Para> 
Ccc 2 
</Para></Discussion></Parameter><Parameter><Name>CCC3</Name><Discussion><Para> 
Ccc 3 
</Para></Discussion></Parameter><Parameter><Name>CCC4</Name><Discussion><Para> 
Ccc 4 
</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Discussion><Para> 
Bbb</Para></Discussion></Parameter></Te
 mplateParameters></Function>] CommentXMLValid
 
-// CHECK: FunctionTemplate=comment_to_html_conversion_22:58:6 RawComment=[/// 
\tparam C1 Ccc 1\n/// \tparam AAA Zzz\n/// \tparam C2 Ccc 2\n/// \tparam C3 Ccc 
3\n/// \tparam C4 Ccc 4\n/// \tparam BBB Bbb] RawCommentRange=[47:1 - 52:20] 
FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">CCC1</dt><dd 
class="tparam-descr-index-0"> Ccc 1 </dd><dt 
class="tparam-name-index-1">PPP</dt><dd class="tparam-descr-index-1"> Zzz 
</dd><dt class="tparam-name-index-other">CCC2</dt><dd 
class="tparam-descr-index-other"> Ccc 2 </dd><dt 
class="tparam-name-index-other">CCC3</dt><dd class="tparam-descr-index-other"> 
Ccc 3 </dd><dt class="tparam-name-index-other">CCC4</dt><dd 
class="tparam-descr-index-other"> Ccc 4 </dd><dt 
class="tparam-name-index-other">QQQ</dt><dd class="tparam-descr-index-other"> 
Bbb</dd></dl>] FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="58" 
column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@FT@&gt;2#T
 
#t&gt;2#T#t&gt;2#T#Tcomment_to_html_conversion_22#</USR><TemplateParameters><Parameter><Name>CCC1</Name><Index>0</Index><Discussion><Para>
 Ccc 1 
</Para></Discussion></Parameter><Parameter><Name>PPP</Name><Index>1</Index><Discussion><Para>
 Zzz 
</Para></Discussion></Parameter><Parameter><Name>CCC2</Name><Discussion><Para> 
Ccc 2 
</Para></Discussion></Parameter><Parameter><Name>CCC3</Name><Discussion><Para> 
Ccc 3 
</Para></Discussion></Parameter><Parameter><Name>CCC4</Name><Discussion><Para> 
Ccc 4 
</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Discussion><Para> 
Bbb</Para></Discussion></Parameter></TemplateParameters></Function>

Modified: cfe/trunk/test/Index/overriding-method-comments.mm
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/overriding-method-comments.mm?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/test/Index/overriding-method-comments.mm (original)
+++ cfe/trunk/test/Index/overriding-method-comments.mm Wed Oct 17 16:58:03 2012
@@ -30,12 +30,6 @@
 - (void)METH:(id)III {}
 @end
 
-// CHECK: FullCommentAsHTML=[<dl><dt class="param-name-index-0">AAA</dt><dd 
class="param-descr-index-0"> ZZZ </dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="19" 
column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction
 isExplicit="1">in</Direction><Discussion><Para> ZZZ 
</Para></Discussion></Parameter></Parameters></Function>
-
-// CHECK: FullCommentAsHTML=[<dl><dt class="param-name-index-0">BBB</dt><dd 
class="param-descr-index-0"> ZZZ </dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="26" 
column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Parameters><Parameter><Name>BBB</Name><Index>0</Index><Direction
 isExplicit="1">in</Direction><Discussion><Para> ZZZ 
</Para></Discussion></Parameter></Parameters></Function>
-
-// CHECK: FullCommentAsHTML=[<dl><dt class="param-name-index-0">III</dt><dd 
class="param-descr-index-0"> ZZZ </dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="30" 
column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Parameters><Parameter><Name>III</Name><Index>0</Index><Direction
 isExplicit="1">in</Direction><Discussion><Para> ZZZ 
</Para></Discussion></Parameter></Parameters></Function>
-
 @interface Redec : Root
 @end
 
@@ -52,10 +46,6 @@
 - (void)EXT_METH:(id)PPP : (double)QQQ : (int)RRR {}
 @end
 
-// CHECK: FullCommentAsHTML=[<dl><dt class="param-name-index-0">AAA</dt><dd 
class="param-descr-index-0"> input value   </dd><dt 
class="param-name-index-1">BBB</dt><dd class="param-descr-index-1"> 2nd input 
value is double  </dd><dt class="param-name-index-2">CCC</dt><dd 
class="param-descr-index-2"> output value is int  </dd></dl>] 
FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="48" 
column="1"><Name>EXT_METH:::</Name><USR>c:objc(cs)Redec(im)EXT_METH:::</USR><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></Paramete
 r></Parameters></Function>
-
-// CHECK: FullCommentAsHTML=[<dl><dt class="param-name-index-0">PPP</dt><dd 
class="param-descr-index-0"> input value   </dd><dt 
class="param-name-index-1">QQQ</dt><dd class="param-descr-index-1"> 2nd input 
value is double  </dd><dt class="param-name-index-2">RRR</dt><dd 
class="param-descr-index-2"> output value is int  </dd></dl>] 
FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="52" 
column="1"><Name>EXT_METH:::</Name><USR>c:objc(cs)Redec(im)EXT_METH:::</USR><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></Paramete
 r></Parameters></Function>
-
 struct Base {
   /// \brief Does something.
   /// \param AAA argument to foo_pure.
@@ -90,35 +80,45 @@
 
 void foo1(int TTT);
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">AAA</dt><dd class="param-descr-index-0"> 
argument to foo_pure.</dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="62" 
column="16"><Name>foo_pure</Name><USR>c:@S@Base@F@foo_pure#I#</USR><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>
+/// \brief Documentation
+/// \tparam BBB The type, silly.
+/// \tparam AAA The type, silly as well.
+template<typename AAA, typename BBB>
+void foo(AAA, BBB);
+
+template<typename PPP, typename QQQ>
+void foo(PPP, QQQ);
+
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="19" 
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>] CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">BBB</dt><dd class="param-descr-index-0"> 
argument to defined virtual.</dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="66" 
column="16"><Name>foo_inline</Name><USR>c:@S@Base@F@foo_inline#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="26" 
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>] CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">CCC</dt><dd class="param-descr-index-0"> 
argument to undefined virtual.</dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="70" 
column="16"><Name>foo_outofline</Name><USR>c:@S@Base@F@foo_outofline#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="30" 
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>] CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">RRR</dt><dd class="param-descr-index-0"> 
argument to undefined virtual.</dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="73" 
column="12"><Name>foo_outofline</Name><USR>c:@S@Base@F@foo_outofline#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="42" 
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>] CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">PPP</dt><dd class="param-descr-index-0"> 
argument to foo_pure.</dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="76" 
column="16"><Name>foo_pure</Name><USR>c:@S@Base@F@foo_pure#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="46" 
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>] CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">QQQ</dt><dd class="param-descr-index-0"> 
argument to defined virtual.</dd></dl>] FullCommentAsXML=[<Function 
isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="78" 
column="16"><Name>foo_inline</Name><USR>c:@S@Base@F@foo_inline#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="52" 
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>] 
CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">DDD</dt><dd class="param-descr-index-0"> 
a value.</dd></dl>] FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="83" 
column="6"><Name>foo</Name><USR>c:@F@foo#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="56" 
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>] 
CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">SSS</dt><dd class="param-descr-index-0"> 
a value.</dd></dl>] FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="85" 
column="6"><Name>foo</Name><USR>c:@F@foo#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="60" 
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>] 
CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">EEE</dt><dd class="param-descr-index-0"> 
argument to function decl. </dd></dl>] FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="89" 
column="6"><Name>foo1</Name><USR>c:@F@foo1#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="63" 
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>] 
CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Does something. 
</p><dl><dt class="param-name-index-0">TTT</dt><dd class="param-descr-index-0"> 
argument to function decl. </dd></dl>] FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="91" 
column="6"><Name>foo1</Name><USR>c:@F@foo1#I#</USR><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>
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="66" 
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>] 
CommentXMLValid
 
-/// \brief Documentation
-/// \tparam BBB The type, silly.
-/// \tparam AAA The type, silly as well.
-template<typename AAA, typename BBB>
-void foo(AAA, BBB);
+// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" 
file="{{[^"]+}}overriding-method-comments.mm" line="68" 
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>] 
CommentXMLValid
 
-template<typename PPP, typename QQQ>
-void foo(PPP, QQQ);
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="73" 
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>] CommentXMLValid
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="75" 
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>] CommentXMLValid
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="79" 
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>] CommentXMLValid
+
+// CHECK: FullCommentAsXML=[<Function 
file="{{[^"]+}}overriding-method-comments.mm" line="81" 
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>] CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Documentation </p><dl><dt 
class="tparam-name-index-0">AAA</dt><dd class="tparam-descr-index-0"> The type, 
silly as well.</dd><dt class="tparam-name-index-1">BBB</dt><dd 
class="tparam-descr-index-1"> The type, silly. </dd></dl>] 
FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-method-comments.mm" line="117" 
column="6"><Name>foo</Name><USR>c:@FT@&gt;2#T#Tfoo#t0.0#t0.1#</USR><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>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-method-comments.mm" line="87" 
column="6"><Name>foo</Name><USR>c:@FT@&gt;2#T#Tfoo#t0.0#t0.1#</USR><Declaration>template
 &lt;typename AAA, typename BBB&gt; 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>] 
CommentXMLValid
 
-// CHECK: FullCommentAsHTML=[<p class="para-brief"> Documentation </p><dl><dt 
class="tparam-name-index-0">PPP</dt><dd class="tparam-descr-index-0"> The type, 
silly as well.</dd><dt class="tparam-name-index-1">QQQ</dt><dd 
class="tparam-descr-index-1"> The type, silly. </dd></dl>] 
FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-method-comments.mm" line="120" 
column="6"><Name>foo</Name><USR>c:@FT@&gt;2#T#Tfoo#t0.0#t0.1#</USR><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>
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-method-comments.mm" line="90" 
column="6"><Name>foo</Name><USR>c:@FT@&gt;2#T#Tfoo#t0.0#t0.1#</USR><Declaration>template
 &lt;typename PPP, typename QQQ&gt; 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>] 
CommentXMLValid

Modified: cfe/trunk/tools/libclang/CXComment.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CXComment.cpp?rev=166130&r1=166129&r2=166130&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/CXComment.cpp (original)
+++ cfe/trunk/tools/libclang/CXComment.cpp Wed Oct 17 16:58:03 2012
@@ -16,6 +16,7 @@
 #include "CXComment.h"
 #include "CXCursor.h"
 
+#include "clang/AST/PrettyPrinter.h"
 #include "clang/AST/CommentVisitor.h"
 #include "clang/AST/CommentCommandTraits.h"
 #include "clang/AST/Decl.h"
@@ -1027,6 +1028,20 @@
   Result << "</Verbatim>";
 }
 
+static StringRef getSourceTextOfDeclaration(const DeclInfo *ThisDecl) {
+  
+  ASTContext &Context = ThisDecl->CurrentDecl->getASTContext();
+  const LangOptions &LangOpts = Context.getLangOpts();
+  std::string SStr;
+  llvm::raw_string_ostream S(SStr);
+  PrintingPolicy PPolicy(LangOpts);
+  PPolicy.SuppressAttributes = true;
+  PPolicy.TerseOutput = true;
+  ThisDecl->CurrentDecl->print(S, PPolicy,
+                               /*Indentation*/0, /*PrintInstantiation*/true);
+  return S.str();
+}
+
 void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
   FullCommentParts Parts(C, Traits);
 
@@ -1096,7 +1111,7 @@
 
     {
       // Print line and column number.
-      SourceLocation Loc = DI->Loc;
+      SourceLocation Loc = DI->CurrentDecl->getLocation();
       std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
       FileID FID = LocInfo.first;
       unsigned FileOffset = LocInfo.second;
@@ -1146,6 +1161,10 @@
   }
 
   bool FirstParagraphIsBrief = false;
+  Result << "<Declaration>";
+  appendToResultWithXMLEscaping(getSourceTextOfDeclaration(DI));
+  Result << "</Declaration>";
+  
   if (Parts.Brief) {
     Result << "<Abstract>";
     visit(Parts.Brief);


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to