Skip to content

Commit 5f0cbf0

Browse files
Fix #13182 FP AssignmentIntegerToAddress with functional-style cast (danmar#6861)
1 parent e8f6d1f commit 5f0cbf0

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

lib/tokenize.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,10 @@ namespace {
786786
tok2 = insertTokens(tok2, mRangeTypeQualifiers);
787787
Token* tok3 = tok2->insertToken(")");
788788
Token::createMutualLinks(tok, tok3);
789+
tok->insertTokenBefore("(");
790+
tok3 = tok3->linkAt(1);
791+
tok3 = tok3->insertToken(")");
792+
Token::createMutualLinks(tok->tokAt(-1), tok3);
789793
}
790794
return;
791795
}

test/testsimplifytypedef.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3387,7 +3387,7 @@ class TestSimplifyTypedef : public TestFixture {
33873387
// #11430
33883388
const char code3[] = "typedef char* T;\n"
33893389
"T f() { return T(\"abc\"); }\n";
3390-
ASSERT_EQUALS("char * f ( ) { return ( char * ) ( \"abc\" ) ; }", tok(code3));
3390+
ASSERT_EQUALS("char * f ( ) { return ( ( char * ) ( \"abc\" ) ) ; }", tok(code3));
33913391

33923392
const char code4[] = "typedef struct _a *A;\n" // #13104
33933393
"typedef struct _b* B;\n"
@@ -3399,6 +3399,17 @@ class TestSimplifyTypedef : public TestFixture {
33993399
ASSERT_EQUALS("extern struct _a * ( * get ) ( struct _b * ) ; "
34003400
"struct _a * f ( ) { return get ( 0 ) ; }",
34013401
tok(code4));
3402+
3403+
const char code5[] = "struct S { int x; };\n" // #13182
3404+
"typedef S* PS;\n"
3405+
"void f(void* a[], int i) {\n"
3406+
" PS(a[i])->x = i;\n"
3407+
"}\n";
3408+
ASSERT_EQUALS("struct S { int x ; } ; "
3409+
"void f ( void * a [ ] , int i ) { "
3410+
"( ( S * ) ( a [ i ] ) ) . x = i ; "
3411+
"}",
3412+
tok(code5));
34023413
}
34033414

34043415
void simplifyTypedef143() { // #11506

0 commit comments

Comments
 (0)