Fixed #10403 (Wrong AST for destructor call)
This commit is contained in:
parent
43fa7d2ebe
commit
0d31486264
@ -728,7 +728,7 @@ static void compileBinOp(Token *&tok, AST_state& state, void (*f)(Token *&tok, A
|
|||||||
Token *binop = tok;
|
Token *binop = tok;
|
||||||
if (f) {
|
if (f) {
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
if (Token::simpleMatch(binop, ":: ~"))
|
if (Token::Match(binop, "::|. ~"))
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
state.depth++;
|
state.depth++;
|
||||||
if (tok && state.depth <= AST_MAX_DEPTH)
|
if (tok && state.depth <= AST_MAX_DEPTH)
|
||||||
@ -934,7 +934,7 @@ static void compilePrecedence2(Token *&tok, AST_state& state)
|
|||||||
state.op.push(tok);
|
state.op.push(tok);
|
||||||
tok = tok->tokAt(3);
|
tok = tok->tokAt(3);
|
||||||
break;
|
break;
|
||||||
} else
|
}
|
||||||
compileBinOp(tok, state, compileScope);
|
compileBinOp(tok, state, compileScope);
|
||||||
} else if (tok->str() == "[") {
|
} else if (tok->str() == "[") {
|
||||||
if (state.cpp && isPrefixUnary(tok, state.cpp) && Token::Match(tok->link(), "] (|{")) { // Lambda
|
if (state.cpp && isPrefixUnary(tok, state.cpp) && Token::Match(tok->link(), "] (|{")) { // Lambda
|
||||||
|
@ -6133,6 +6133,7 @@ private:
|
|||||||
ASSERT_EQUALS("abc{d{,{(=", testAst("a = b({ c{}, d{} });"));
|
ASSERT_EQUALS("abc{d{,{(=", testAst("a = b({ c{}, d{} });"));
|
||||||
ASSERT_EQUALS("abc;(", testAst("a(b;c)"));
|
ASSERT_EQUALS("abc;(", testAst("a(b;c)"));
|
||||||
ASSERT_EQUALS("x{( forbc;;(", testAst("x({ for(a;b;c){} });"));
|
ASSERT_EQUALS("x{( forbc;;(", testAst("x({ for(a;b;c){} });"));
|
||||||
|
ASSERT_EQUALS("PT.(", testAst("P->~T();")); // <- The "T" token::function() will be a destructor
|
||||||
}
|
}
|
||||||
|
|
||||||
void asttemplate() { // uninstantiated templates will have <,>,etc..
|
void asttemplate() { // uninstantiated templates will have <,>,etc..
|
||||||
|
Loading…
x
Reference in New Issue
Block a user