Fix issue 9171: Endless recursion (#1877)
This commit is contained in:
parent
2caea15056
commit
169510bd3a
|
@ -485,6 +485,8 @@ static bool iscpp11init(const Token * const tok)
|
||||||
return false;
|
return false;
|
||||||
if (Token::Match(nameToken, "else|try|do|const|override|volatile|&|&&"))
|
if (Token::Match(nameToken, "else|try|do|const|override|volatile|&|&&"))
|
||||||
return false;
|
return false;
|
||||||
|
if (Token::simpleMatch(nameToken->previous(), "namespace"))
|
||||||
|
return false;
|
||||||
// There is no initialisation for example here: 'class Fred {};'
|
// There is no initialisation for example here: 'class Fred {};'
|
||||||
if (!Token::simpleMatch(endtok, "} ;"))
|
if (!Token::simpleMatch(endtok, "} ;"))
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -457,6 +457,7 @@ private:
|
||||||
TEST_CASE(findGarbageCode);
|
TEST_CASE(findGarbageCode);
|
||||||
TEST_CASE(checkEnableIf);
|
TEST_CASE(checkEnableIf);
|
||||||
TEST_CASE(checkTemplates);
|
TEST_CASE(checkTemplates);
|
||||||
|
TEST_CASE(checkNamespaces);
|
||||||
|
|
||||||
// #9052
|
// #9052
|
||||||
TEST_CASE(noCrash1);
|
TEST_CASE(noCrash1);
|
||||||
|
@ -7800,6 +7801,10 @@ private:
|
||||||
"int main() { using T = void (*)(a<j<F, char[]>>); }\n"))
|
"int main() { using T = void (*)(a<j<F, char[]>>); }\n"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkNamespaces() {
|
||||||
|
ASSERT_NO_THROW(tokenizeAndStringify("namespace x { namespace y { namespace z {}}}"))
|
||||||
|
}
|
||||||
|
|
||||||
void noCrash1() {
|
void noCrash1() {
|
||||||
ASSERT_NO_THROW(tokenizeAndStringify(
|
ASSERT_NO_THROW(tokenizeAndStringify(
|
||||||
"struct A {\n"
|
"struct A {\n"
|
||||||
|
|
Loading…
Reference in New Issue