Skip to content

Commit 5d3b528

Browse files
Fix #12924 Syntax error on func(&data)[0] (#6585)
1 parent ba29f83 commit 5d3b528

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

lib/tokenize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4328,7 +4328,7 @@ static bool setVarIdParseDeclaration(Token*& tok, const VariableMap& variableMap
43284328
}
43294329
if (Token::Match(tok3, "= %num%"))
43304330
return false;
4331-
if (bracket && Token::Match(tok1->previous(), "[(,]") && Token::Match(tok3, "[,)]"))
4331+
if (bracket && Token::Match(tok1->previous(), "[(,]") && Token::Match(tok3, ",|)|%cop%"))
43324332
return false;
43334333
}
43344334

test/testvarid.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3279,6 +3279,15 @@ class TestVarID : public TestFixture {
32793279
" else x;\n"
32803280
" x;\n"
32813281
"}"));
3282+
3283+
ASSERT_EQUALS("1: const char * f ( int * ) ;\n" // #12924
3284+
"2: void g ( int i@1 ) {\n"
3285+
"3: if ( f ( & i@1 ) [ 0 ] == 'm' ) { }\n"
3286+
"4: }\n",
3287+
tokenize("const char *f(int*);\n"
3288+
"void g(int i) {\n"
3289+
" if (f(&i)[0] == 'm') {}\n"
3290+
"}\n", false));
32823291
}
32833292

32843293
void varid_globalScope() {

0 commit comments

Comments
 (0)