diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 4d38a749845..f18957ac526 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -8415,6 +8415,9 @@ void Tokenizer::findGarbageCode() const else if (Token::Match(tok, "[({<] %assign%")) syntaxError(tok); + else if (Token::Match(tok, "[`\\@]")) + syntaxError(tok); + // UNKNOWN_MACRO(return) if (tok->isKeyword() && Token::Match(tok, "throw|return )") && Token::Match(tok->linkAt(1)->previous(), "%name% (")) unknownMacroError(tok->linkAt(1)->previous()); diff --git a/test/testgarbage.cpp b/test/testgarbage.cpp index 8972da28463..776d96cd9c5 100644 --- a/test/testgarbage.cpp +++ b/test/testgarbage.cpp @@ -253,6 +253,7 @@ class TestGarbage : public TestFixture { TEST_CASE(garbageCode223); // #11639 TEST_CASE(garbageCode224); TEST_CASE(garbageCode225); + TEST_CASE(garbageCode226); TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1 @@ -1740,6 +1741,11 @@ class TestGarbage : public TestFixture { ASSERT_THROW_INTERNAL(checkCode("int n() { c * s0, 0 s0 = c(sizeof = ) }"), SYNTAX); ASSERT_THROW_INTERNAL(checkCode("int n() { c * s0, 0 s0 = c(sizeof |= ) }"), SYNTAX); } + void garbageCode226() { + ASSERT_THROW_INTERNAL(checkCode("int a() { (b((c)`)) } {}"), SYNTAX); // #11638 + ASSERT_THROW_INTERNAL(checkCode("int a() { (b((c)\\)) } {}"), SYNTAX); + ASSERT_THROW_INTERNAL(checkCode("int a() { (b((c)@)) } {}"), SYNTAX); + } void syntaxErrorFirstToken() { ASSERT_THROW_INTERNAL(checkCode("&operator(){[]};"), SYNTAX); // #7818 diff --git a/test/testother.cpp b/test/testother.cpp index eaddae272c6..a558cb922f5 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -4386,7 +4386,7 @@ class TestOther : public TestFixture { ASSERT_EQUALS("", errout_str()); // Ticket #6132 "crash: daca: kvirc CheckOther::checkRedundantAssignment()" - check("void HttpFileTransfer :: transferTerminated ( bool bSuccess@1 ) {\n" + check("void HttpFileTransfer :: transferTerminated ( bool bSuccess ) {\n" "if ( m_szCompletionCallback . isNull ( ) ) {\n" "KVS_TRIGGER_EVENT ( KviEvent_OnHTTPGetTerminated , out ? out : ( g_pApp . activeConsole ( ) ) , & vParams )\n" "} else {\n"