parent
3f5054035d
commit
5b687cb038
|
@ -3917,7 +3917,15 @@ void Tokenizer::setVarIdPass1()
|
|||
if (!scopeStack.top().isExecutable)
|
||||
newFunctionDeclEnd = isFunctionHead(tok, "{:;");
|
||||
else {
|
||||
Token const * const tokenLinkNext = tok->link()->next();
|
||||
const Token* tokenLinkNext = tok->link()->next();
|
||||
if (Token::simpleMatch(tokenLinkNext, ".")) { // skip trailing return type
|
||||
tokenLinkNext = tokenLinkNext->next();
|
||||
while (Token::Match(tokenLinkNext, "%name%|::")) {
|
||||
tokenLinkNext = tokenLinkNext->next();
|
||||
if (Token::simpleMatch(tokenLinkNext, "<") && tokenLinkNext->link())
|
||||
tokenLinkNext = tokenLinkNext->link()->next();
|
||||
}
|
||||
}
|
||||
if (tokenLinkNext && tokenLinkNext->str() == "{") // might be for- or while-loop or if-statement
|
||||
newFunctionDeclEnd = tokenLinkNext;
|
||||
}
|
||||
|
|
|
@ -176,6 +176,7 @@ private:
|
|||
TEST_CASE(varid_lambda_mutable);
|
||||
TEST_CASE(varid_trailing_return1); // #8889
|
||||
TEST_CASE(varid_trailing_return2); // #9066
|
||||
TEST_CASE(varid_trailing_return3); // #11423
|
||||
TEST_CASE(varid_parameter_pack); // #9383
|
||||
TEST_CASE(varid_for_auto_cpp17);
|
||||
TEST_CASE(varid_not); // #9689 'not x'
|
||||
|
@ -2822,6 +2823,18 @@ private:
|
|||
ASSERT_EQUALS(exp1, tokenize(code1));
|
||||
}
|
||||
|
||||
void varid_trailing_return3() { // #11423
|
||||
const char code[] = "void f(int a, int b) {\n"
|
||||
" auto g = [](int& a, const int b) -> void {};\n"
|
||||
" auto h = [&a, &b]() { std::swap(a, b); };\n"
|
||||
"}\n";
|
||||
const char exp[] = "1: void f ( int a@1 , int b@2 ) {\n"
|
||||
"2: auto g@3 ; g@3 = [ ] ( int & a@4 , const int b@5 ) . void { } ;\n"
|
||||
"3: auto h@6 ; h@6 = [ & a@1 , & b@2 ] ( ) { std :: swap ( a@1 , b@2 ) ; } ;\n"
|
||||
"4: }\n";
|
||||
ASSERT_EQUALS(exp, tokenize(code));
|
||||
}
|
||||
|
||||
void varid_parameter_pack() { // #9383
|
||||
const char code1[] = "template <typename... Rest>\n"
|
||||
"void func(Rest... parameters) {\n"
|
||||
|
|
Loading…
Reference in New Issue