Skip to content

Commit 33db4eb

Browse files
committed
Fix
1 parent b798e9c commit 33db4eb

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

‎lib/tokenize.cpp‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9169,11 +9169,14 @@ void Tokenizer::findGarbageCode() const
91699169
if (Token::simpleMatch(tok, "::")) {
91709170
if (!Token::Match(tok->next(), "%name%|*|~") || (tok->next()->isKeyword() && !Token::Match(tok->next(), "new|delete|operator")))
91719171
syntaxError(tok);
9172-
if (Token::simpleMatch(tok->tokAt(-1), ")") && !Token::simpleMatch(tok->linkAt(-1)->tokAt(-1), "decltype (")) {
9173-
if (tok->linkAt(-1)->tokAt(-1) && tok->linkAt(-1)->tokAt(-1)->isUpperCaseName())
9174-
unknownMacroError(tok);
9175-
else
9176-
syntaxError(tok);
9172+
if (Token::simpleMatch(tok->tokAt(-1), ")")) {
9173+
const Token* const prev = tok->linkAt(-1)->tokAt(-1);
9174+
if (!Token::Match(prev, "%name% (") || (!prev->isControlFlowKeyword() && prev->str() != "decltype")) {
9175+
if (prev && prev->isUpperCaseName())
9176+
unknownMacroError(prev);
9177+
else
9178+
syntaxError(tok);
9179+
}
91779180
}
91789181
}
91799182
if (Token::Match(tok, "& %comp%|&&|%oror%|&|%or%") && tok->strAt(1) != ">")

‎test/testsymboldatabase.cpp‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3773,7 +3773,8 @@ class TestSymbolDatabase : public TestFixture {
37733773
}
37743774

37753775
void symboldatabase35() { // ticket #4806 and #4841
3776-
ASSERT_THROW_INTERNAL(check("class FragmentQueue : public CL_NS(util)::PriorityQueue<CL_NS(util)::Deletor::Object<TextFragment> >\n"), UNKNOWN_MACRO);
3776+
ASSERT_THROW_INTERNAL(check("class FragmentQueue : public CL_NS(util)::PriorityQueue<CL_NS(util)::Deletor::Object<TextFragment> >\n"
3777+
"{};\n"), UNKNOWN_MACRO);
37773778
}
37783779

37793780
void symboldatabase36() { // ticket #4892

0 commit comments

Comments
 (0)