Fix up a few more cases where templates ending in ">>" should be changed to end in "> >". (#1883)
This commit is contained in:
parent
2a4b28c267
commit
c0d8990e8b
|
@ -2825,6 +2825,12 @@ void Tokenizer::simplifyTemplates()
|
||||||
endTok->str(">");
|
endTok->str(">");
|
||||||
endTok->insertToken(">");
|
endTok->insertToken(">");
|
||||||
}
|
}
|
||||||
|
} else if (Token::Match(tok, "class|struct|union|=|:|public|protected|private %name% <")) {
|
||||||
|
Token *endTok = tok->tokAt(2)->findClosingBracket();
|
||||||
|
if (Token::Match(endTok, ">> ;|{")) {
|
||||||
|
endTok->str(">");
|
||||||
|
endTok->insertToken(">");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -343,6 +343,7 @@ private:
|
||||||
TEST_CASE(cpp0xtemplate2);
|
TEST_CASE(cpp0xtemplate2);
|
||||||
TEST_CASE(cpp0xtemplate3);
|
TEST_CASE(cpp0xtemplate3);
|
||||||
TEST_CASE(cpp0xtemplate4); // Ticket #6181: Mishandled C++11 syntax
|
TEST_CASE(cpp0xtemplate4); // Ticket #6181: Mishandled C++11 syntax
|
||||||
|
TEST_CASE(cpp0xtemplate5); // Ticket #9154 change >> to > >
|
||||||
TEST_CASE(cpp14template); // Ticket #6708
|
TEST_CASE(cpp14template); // Ticket #6708
|
||||||
|
|
||||||
TEST_CASE(arraySize);
|
TEST_CASE(arraySize);
|
||||||
|
@ -5266,6 +5267,34 @@ private:
|
||||||
"}");
|
"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cpp0xtemplate5() { // #9154
|
||||||
|
{
|
||||||
|
const char *code = "struct s<x<u...>>;";
|
||||||
|
ASSERT_EQUALS("struct s < x < u . . . > > ;",
|
||||||
|
tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char *code = "template <class f> using c = e<i<q<f,r>,b...>>;";
|
||||||
|
ASSERT_EQUALS("template < class f > using c = e < i < q < f , r > , b . . . > > ;",
|
||||||
|
tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char *code = "struct s<x<u...>> { };";
|
||||||
|
ASSERT_EQUALS("struct s < x < u . . . > > { } ;",
|
||||||
|
tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char *code = "struct q : s<x<u...>> { };";
|
||||||
|
ASSERT_EQUALS("struct q : s < x < u . . . > > { } ;",
|
||||||
|
tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char *code = "struct q : private s<x<u...>> { };";
|
||||||
|
ASSERT_EQUALS("struct q : private s < x < u . . . > > { } ;",
|
||||||
|
tokenizeAndStringify(code));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void cpp14template() { // Ticket #6708
|
void cpp14template() { // Ticket #6708
|
||||||
tokenizeAndStringify("template <typename T> "
|
tokenizeAndStringify("template <typename T> "
|
||||||
"decltype(auto) forward(T& t) { return 0; }");
|
"decltype(auto) forward(T& t) { return 0; }");
|
||||||
|
|
Loading…
Reference in New Issue