AST: fix hang for code 'MACRO({.x=1,.y=2})'
This commit is contained in:
parent
67ea470275
commit
cd75b2d83d
|
@ -895,6 +895,8 @@ static Token * createAstAtToken(Token *tok, bool cpp)
|
||||||
continue;
|
continue;
|
||||||
if (tok->next() == endToken)
|
if (tok->next() == endToken)
|
||||||
break;
|
break;
|
||||||
|
if (Token::simpleMatch(tok, "( { ."))
|
||||||
|
break;
|
||||||
const Token * const endToken2 = tok->linkAt(1);
|
const Token * const endToken2 = tok->linkAt(1);
|
||||||
for (; tok && tok != endToken && tok != endToken2; tok = tok ? tok->next() : NULL)
|
for (; tok && tok != endToken && tok != endToken2; tok = tok ? tok->next() : NULL)
|
||||||
tok = createAstAtToken(tok, cpp);
|
tok = createAstAtToken(tok, cpp);
|
||||||
|
|
|
@ -10755,6 +10755,9 @@ private:
|
||||||
ASSERT_EQUALS("QT_WA{{,( QT_WA{{,( x1=",
|
ASSERT_EQUALS("QT_WA{{,( QT_WA{{,( x1=",
|
||||||
testAst("QT_WA({},{x=0;});" // don't hang
|
testAst("QT_WA({},{x=0;});" // don't hang
|
||||||
"QT_WA({x=1;},{x=2;});"));
|
"QT_WA({x=1;},{x=2;});"));
|
||||||
|
ASSERT_EQUALS("xMACROtypeT=value1=,{({=",
|
||||||
|
testAst("x = { MACRO( { .type=T, .value=1 } ) }")); // dont hang: MACRO({..})
|
||||||
|
|
||||||
|
|
||||||
// function pointer
|
// function pointer
|
||||||
TODO_ASSERT_EQUALS("todo", "va_argapvoid((,(*0=", testAst("*va_arg(ap, void(**) ()) = 0;"));
|
TODO_ASSERT_EQUALS("todo", "va_argapvoid((,(*0=", testAst("*va_arg(ap, void(**) ()) = 0;"));
|
||||||
|
|
Loading…
Reference in New Issue