Skip to content

Commit 7fc09d8

Browse files
committed
Fix #14863 (dumpfile: flag isSimplifiedScope when compound scope is missing)
1 parent 93bc251 commit 7fc09d8

3 files changed

Lines changed: 17 additions & 1 deletion

File tree

lib/token.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1498,7 +1498,7 @@ class CPPCHECKLIB Token {
14981498
fIsImplicitInt = (1ULL << 33), // Is "int" token implicitly added?
14991499
fIsInline = (1ULL << 34), // Is this a inline type
15001500
fIsTemplate = (1ULL << 35),
1501-
fIsSimplifedScope = (1ULL << 36), // scope added when simplifying e.g. if (int i = ...; ...)
1501+
fIsSimplifedScope = (1ULL << 36), // scope added when simplifying e.g. if (x) f(); => if (x) { f(); }
15021502
fIsRemovedVoidParameter = (1ULL << 37), // A void function parameter has been removed
15031503
fIsIncompleteConstant = (1ULL << 38),
15041504
fIsRestrict = (1ULL << 39), // Is this a restrict pointer type

lib/tokenize.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6218,6 +6218,8 @@ void Tokenizer::dump(std::ostream &out) const
62186218
}
62196219
if (tok->isRemovedVoidParameter())
62206220
outs += " isRemovedVoidParameter=\"true\"";
6221+
if (tok->isSimplifiedScope())
6222+
outs += " isSimplifiedScope=\"true\"";
62216223
if (tok->isSplittedVarDeclComma())
62226224
outs += " isSplittedVarDeclComma=\"true\"";
62236225
if (tok->isSplittedVarDeclEq())
@@ -7004,10 +7006,12 @@ Token *Tokenizer::simplifyAddBracesPair(Token *tok, bool commandWithCondition)
70047006
tokAfterCondition->previous()->insertToken("{");
70057007
Token * tokOpenBrace=tokAfterCondition->previous();
70067008
tokOpenBrace->column(tokAfterCondition->column());
7009+
tokOpenBrace->isSimplifiedScope(true);
70077010

70087011
tokEnd->insertToken("}");
70097012
Token * tokCloseBrace=tokEnd->next();
70107013
tokCloseBrace->column(tokEnd->column());
7014+
tokCloseBrace->isSimplifiedScope(true);
70117015

70127016
Token::createMutualLinks(tokOpenBrace,tokCloseBrace);
70137017
tokBracesEnd=tokCloseBrace;

test/testtokenize.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ class TestTokenizer : public TestFixture {
140140

141141
TEST_CASE(whileAddBraces);
142142
TEST_CASE(whileAddBracesLabels);
143+
TEST_CASE(whileAddBracesDump);
143144

144145
TEST_CASE(doWhileAddBraces);
145146
TEST_CASE(doWhileAddBracesLabels);
@@ -1532,6 +1533,17 @@ class TestTokenizer : public TestFixture {
15321533
ASSERT_EQUALS("", filter_valueflow(errout_str()));
15331534
}
15341535

1536+
void whileAddBracesDump() {
1537+
const char code[] = "void f(){while(a);}";
1538+
SimpleTokenizer tokenizer(settingsDefault, *this, false);
1539+
ASSERT(tokenizer.tokenize(code));
1540+
ASSERT(Token::simpleMatch(tokenizer.tokens(), "void f ( ) { while ( a ) { ; } }"));
1541+
std::ostringstream ostr;
1542+
tokenizer.dump(ostr);
1543+
const std::string dump = ostr.str();
1544+
ASSERT(dump.find("isSimplifiedScope=\"true\"") != std::string::npos);
1545+
}
1546+
15351547
void doWhileAddBraces() {
15361548
{
15371549
const char code[] = "{do ; while (0);}";

0 commit comments

Comments
 (0)