parent
dde956b085
commit
93297727ef
|
@ -762,6 +762,8 @@ static void compileTerm(Token *&tok, AST_state& state)
|
||||||
tok = tok->linkAt(1);
|
tok = tok->linkAt(1);
|
||||||
else if (Token::Match(tok, "%name% ...") || (state.op.size() == 1 && state.depth == 0 && Token::Match(tok->tokAt(-3), "!!& ) ( %name% ) =")))
|
else if (Token::Match(tok, "%name% ...") || (state.op.size() == 1 && state.depth == 0 && Token::Match(tok->tokAt(-3), "!!& ) ( %name% ) =")))
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
|
else if (Token::simpleMatch(tok, "decltype (") && Token::simpleMatch(tok->linkAt(1), ") ::"))
|
||||||
|
tok = tok->linkAt(1);
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
if (Token::Match(tok, "%str%")) {
|
if (Token::Match(tok, "%str%")) {
|
||||||
while (Token::Match(tok, "%name%|%str%"))
|
while (Token::Match(tok, "%name%|%str%"))
|
||||||
|
@ -836,7 +838,8 @@ static void compileScope(Token *&tok, AST_state& state)
|
||||||
if (Token::Match(lastOp, ":: %name%"))
|
if (Token::Match(lastOp, ":: %name%"))
|
||||||
lastOp = lastOp->next();
|
lastOp = lastOp->next();
|
||||||
if (Token::Match(lastOp, "%name%") &&
|
if (Token::Match(lastOp, "%name%") &&
|
||||||
(lastOp->next() == tok || (Token::Match(lastOp, "%name% <") && lastOp->linkAt(1) && tok == lastOp->linkAt(1)->next())))
|
(lastOp->next() == tok ||
|
||||||
|
(Token::Match(lastOp, "%name% <|(") && lastOp->linkAt(1) && tok == lastOp->linkAt(1)->next())))
|
||||||
compileBinOp(tok, state, compileTerm);
|
compileBinOp(tok, state, compileTerm);
|
||||||
else
|
else
|
||||||
compileUnaryOp(tok, state, compileTerm);
|
compileUnaryOp(tok, state, compileTerm);
|
||||||
|
|
|
@ -6073,7 +6073,7 @@ private:
|
||||||
// C++17: if (expr1; expr2)
|
// C++17: if (expr1; expr2)
|
||||||
ASSERT_EQUALS("ifx3=y;(", testAst("if (int x=3; y)"));
|
ASSERT_EQUALS("ifx3=y;(", testAst("if (int x=3; y)"));
|
||||||
|
|
||||||
|
ASSERT_EQUALS("xstdstring::decltypea::{=", testAst("auto x = std::string{ decltype(s)::a };"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void astexpr2() { // limit for large expressions
|
void astexpr2() { // limit for large expressions
|
||||||
|
|
Loading…
Reference in New Issue