Author: djasper
Date: Mon Jan 21 08:39:22 2013
New Revision: 173047

URL: http://llvm.org/viewvc/llvm-project?rev=173047&view=rev
Log:
Fix parsing of templated declarations.

Before: template <template <typename T>, typename P > class X;
After:  template <template <typename T>, typename P> class X;

More importantly, the token annotations for the second ">" are now computed
correctly.

Modified:
    cfe/trunk/lib/Format/Format.cpp
    cfe/trunk/test/Index/comment-to-html-xml-conversion.cpp
    cfe/trunk/test/Index/overriding-ftemplate-comments.cpp
    cfe/trunk/unittests/Format/FormatTest.cpp

Modified: cfe/trunk/lib/Format/Format.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=173047&r1=173046&r2=173047&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Mon Jan 21 08:39:22 2013
@@ -1006,7 +1006,6 @@
         if (!parseAngle())
           return false;
         CurrentToken->Parent->ClosesTemplateDeclaration = true;
-        parseLine();
         return true;
       }
       return false;

Modified: cfe/trunk/test/Index/comment-to-html-xml-conversion.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/comment-to-html-xml-conversion.cpp?rev=173047&r1=173046&r2=173047&view=diff
==============================================================================
--- cfe/trunk/test/Index/comment-to-html-xml-conversion.cpp (original)
+++ cfe/trunk/test/Index/comment-to-html-xml-conversion.cpp Mon Jan 21 08:39:22 
2013
@@ -352,7 +352,7 @@
 template<template<template<typename T> class TT, class C> class TTT>
 void comment_to_html_conversion_21();
 
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: 
FunctionTemplate=comment_to_html_conversion_21:{{.*}} 
FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">TTT</dt><dd 
class="tparam-descr-index-0"> Ddd </dd><dt 
class="tparam-name-index-other">C</dt><dd class="tparam-descr-index-other"> Ccc 
</dd><dt class="tparam-name-index-other">T</dt><dd 
class="tparam-descr-index-other"> Aaa </dd><dt 
class="tparam-name-index-other">TT</dt><dd class="tparam-descr-index-other"> 
Bbb</dd></dl>] FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" 
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 T&gt; class TT,\n                    
class C &gt; class TTT &gt; void 
comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>TTT</Name><Index>0</Index><Discussion
 ><Para> Ddd 
 ></Para></Discussion></Parameter><Parameter><Name>C</Name><Discussion><Para> 
 >Ccc 
 ></Para></Discussion></Parameter><Parameter><Name>T</Name><Discussion><Para> 
 >Aaa 
 ></Para></Discussion></Parameter><Parameter><Name>TT</Name><Discussion><Para> 
 >Bbb</Para></Discussion></Parameter></TemplateParameters></Function>]
+// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: 
FunctionTemplate=comment_to_html_conversion_21:{{.*}} 
FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">TTT</dt><dd 
class="tparam-descr-index-0"> Ddd </dd><dt 
class="tparam-name-index-other">C</dt><dd class="tparam-descr-index-other"> Ccc 
</dd><dt class="tparam-name-index-other">T</dt><dd 
class="tparam-descr-index-other"> Aaa </dd><dt 
class="tparam-name-index-other">TT</dt><dd class="tparam-descr-index-other"> 
Bbb</dd></dl>] FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" 
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 T&gt; class TT, class C&gt; class 
TTT&gt;\nvoid 
comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>TTT</Name><Index>0</Index><Discussion><Para>
 Ddd </Para></D
 iscussion></Parameter><Parameter><Name>C</Name><Discussion><Para> Ccc 
</Para></Discussion></Parameter><Parameter><Name>T</Name><Discussion><Para> Aaa 
</Para></Discussion></Parameter><Parameter><Name>TT</Name><Discussion><Para> 
Bbb</Para></Discussion></Parameter></TemplateParameters></Function>]
 // CHECK-NEXT:  CommentAST=[
 // CHECK-NEXT:    (CXComment_FullComment
 // CHECK-NEXT:       (CXComment_Paragraph IsWhitespace

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=173047&r1=173046&r2=173047&view=diff
==============================================================================
--- cfe/trunk/test/Index/overriding-ftemplate-comments.cpp (original)
+++ cfe/trunk/test/Index/overriding-ftemplate-comments.cpp Mon Jan 21 08:39:22 
2013
@@ -59,12 +59,12 @@
 template<template<template<typename CCC> class DDD, class BBB> class AAA>
 void comment_to_html_conversion_21();
 
-// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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,\n                    
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>]
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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;\nvoid 
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>]
 
 template<template<template<typename RRR> class SSS, class QQQ> class PPP>
 void comment_to_html_conversion_21();
 
-// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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,\n                    
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>]
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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;\nvoid 
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>]
 
 
//===----------------------------------------------------------------------===//
 
@@ -74,13 +74,13 @@
 /// \tparam C3 Ccc 3
 /// \tparam C4 Ccc 4
 /// \tparam BBB Bbb
-template <class C1, template <class C2, template <class C3, class C4> class 
BBB > class AAA >
+template <class C1, template <class C2, template <class C3, class C4> class 
BBB > class AAA>
 void comment_to_html_conversion_22();
 
-// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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,\n          template &lt;class C2, template &lt;class C3, class 
C4&gt; class BBB &gt;\n                    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>]
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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;\n      class AAA&gt;\nvoid 
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></T
 emplateParameters></Function>]
 
 template<class CCC1, template<class CCC2, template<class CCC3, class CCC4> 
class QQQ> class PPP>
 void comment_to_html_conversion_22();
 
-// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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,\n          template &lt;class CCC2, template &lt;class CCC3, 
class CCC4&gt; class QQQ &gt;\n                    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><Pa
 ra> Bbb</Para></Discussion></Parameter></TemplateParameters></Function>]
+// CHECK: FullCommentAsXML=[<Function templateKind="template" 
file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" 
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,\n          template &lt;class CCC2, template &lt;class CCC3, 
class CCC4&gt; class QQQ&gt;\n      class PPP&gt;\nvoid 
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></TemplateParameters></Function>]
 

Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=173047&r1=173046&r2=173047&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Jan 21 08:39:22 2013
@@ -1523,8 +1523,7 @@
 
   // Actual definitions...
   verifyFormat("struct {} n;");
-  verifyFormat(
-      "template <template <class T, class Y>, class Z > class X {} n;");
+  verifyFormat("template <template <class T, class Y>, class Z> class X {} 
n;");
   verifyFormat("union Z {\n  int n;\n} x;");
   verifyFormat("class MACRO Z {} n;");
   verifyFormat("class MACRO(X) Z {} n;");


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

Reply via email to