Merge pull request #5158 from chrchr-github/chr_Fix11770

Partial fix for #11770 cppcheckError with unknown macro
This commit is contained in:
chrchr-github 2023-06-16 22:40:56 +02:00 committed by GitHub
commit 3f0f9e4476
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 3 deletions

View File

@ -8106,6 +8106,8 @@ void Tokenizer::reportUnknownMacros() const
else else
unknownMacroError(tok); unknownMacroError(tok);
} }
} else if (isCPP() && Token::Match(tok, "public|private|protected %name% :")) {
unknownMacroError(tok->next());
} }
} }

View File

@ -5513,7 +5513,7 @@ private:
" QString s;\n" " QString s;\n"
"public:\n" "public:\n"
" C(QString);\n" " C(QString);\n"
"private slots:\n" "private:\n"
" void f() {\n" " void f() {\n"
" QVERIFY(QDir(s).exists());\n" " QVERIFY(QDir(s).exists());\n"
" }\n" " }\n"

View File

@ -2859,7 +2859,7 @@ private:
void symboldatabase2() { void symboldatabase2() {
check("class foo {\n" check("class foo {\n"
"public slots :\n" "public:\n"
"foo() { }\n" "foo() { }\n"
"};"); "};");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());

View File

@ -6936,6 +6936,21 @@ private:
ASSERT_THROW_EQUALS(tokenizeAndStringify("int f() { MACRO(x) return 0; }"), ASSERT_THROW_EQUALS(tokenizeAndStringify("int f() { MACRO(x) return 0; }"),
InternalError, InternalError,
"There is an unknown macro here somewhere. Configuration is required. If MACRO is a macro then please configure it."); "There is an unknown macro here somewhere. Configuration is required. If MACRO is a macro then please configure it.");
ASSERT_THROW_EQUALS(tokenizeAndStringify("class C : public QObject {\n" // #11770
" struct S { static void g() {} };\n"
"private Q_SLOTS:\n"
" void f() { S::g(); }\n"
"};\n"),
InternalError,
"There is an unknown macro here somewhere. Configuration is required. If Q_SLOTS is a macro then please configure it.");
ASSERT_THROW_EQUALS(tokenizeAndStringify("class C : public QObject {\n"
" struct S { static void g() {} };\n"
"private slots:\n"
" void f() { S::g(); }\n"
"};\n"),
InternalError,
"There is an unknown macro here somewhere. Configuration is required. If slots is a macro then please configure it.");
} }

View File

@ -7074,7 +7074,7 @@ private:
valueOfTok(code, "c"); valueOfTok(code, "c");
code = "class T {\n" code = "class T {\n"
"private slots:\n" "private:\n"
" void f() { D& r = dynamic_cast<D&>(*m); }\n" " void f() { D& r = dynamic_cast<D&>(*m); }\n"
" void g() { m.reset(new D); }\n" " void g() { m.reset(new D); }\n"
"private:\n" "private:\n"