Skip to content

Commit

Permalink
Merge branch 'main' into chr_overridden
Browse files Browse the repository at this point in the history
  • Loading branch information
chrchr-github committed Jul 1, 2023
2 parents 14234c1 + b99931c commit 47bf62f
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
11 changes: 11 additions & 0 deletions lib/tokenize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8054,6 +8054,17 @@ void Tokenizer::reportUnknownMacros() const
}
}

// Report unknown macros before } "{ .. if (x) MACRO }"
for (const Token *tok = tokens(); tok; tok = tok->next()) {
if (Token::Match(tok, ")|; %name% }")) {
const Token* prev = tok->linkAt(2);
while (Token::simpleMatch(prev, "{"))
prev = prev->previous();
if (Token::Match(prev, ";|)"))
unknownMacroError(tok->next());
}
}

// Report unknown macros that contain several statements "MACRO(a;b;c)"
for (const Token *tok = tokens(); tok; tok = tok->next()) {
if (!Token::Match(tok, "%name% ("))
Expand Down
9 changes: 9 additions & 0 deletions test/testclass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8440,6 +8440,15 @@ class TestClass : public TestFixture {
" void g() { f(); }\n"
"};");
ASSERT_EQUALS("", errout.str());

checkUselessOverride("struct B { virtual void f(); };\n" // #11808
"struct D : B { void f() override {} };\n"
"struct D2 : D {\n"
" void f() override {\n"
" B::f();\n"
" }\n"
"};");
ASSERT_EQUALS("", errout.str());
}

#define checkUnsafeClassRefMember(code) checkUnsafeClassRefMember_(code, __FILE__, __LINE__)
Expand Down
3 changes: 3 additions & 0 deletions test/testtokenize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6843,6 +6843,9 @@ class TestTokenizer : public TestFixture {
ASSERT_NO_THROW(tokenizeAndStringify(code11));

ASSERT_NO_THROW(tokenizeAndStringify("alignas(8) alignas(16) int x;")); // alignas is not unknown macro

ASSERT_THROW(tokenizeAndStringify("void foo() { if(x) SYSTEM_ERROR }"), InternalError);
ASSERT_THROW(tokenizeAndStringify("void foo() { dostuff(); SYSTEM_ERROR }"), InternalError);
}

void findGarbageCode() { // Test Tokenizer::findGarbageCode()
Expand Down

0 comments on commit 47bf62f

Please sign in to comment.