diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 2279f16a80e..8eb139f0b36 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -9109,7 +9109,8 @@ void Tokenizer::findGarbageCode() const if (tok->strAt(1) == "(") syntaxError(tok); else if (!(tok->tokType() == Token::Type::eString && Token::simpleMatch(tok->tokAt(-1), "extern")) && - !(tok->tokType() == Token::Type::eBoolean && cpp && Token::simpleMatch(tok->tokAt(-1), "requires"))) + !(tok->tokType() == Token::Type::eBoolean && cpp && Token::simpleMatch(tok->tokAt(-1), "requires")) && + !Token::simpleMatch(tok->linkAt(1), "} ;")) syntaxError(tok); } if (Token::Match(tok, "( ) %num%|%bool%|%char%|%str%")) diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index ddccaa62584..ecfc169bba8 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -8128,6 +8128,7 @@ class TestTokenizer : public TestFixture { ignore_errout(); ASSERT_EQUALS(";", tokenizeAndStringify("typedef std::size_t size_t;\n")); // #14809 + ASSERT_EQUALS("struct S { int i { 0 } ; } ;", tokenizeAndStringify("struct S { int i : 1{0}; };\n")); // #15070 }