| 1477 | } |
| 1478 | |
| 1479 | const Token* isLambdaCaptureList(const Token * tok) |
| 1480 | { |
| 1481 | // a lambda expression '[x](y){}' is compiled as: |
| 1482 | // [ |
| 1483 | // `-( <<-- optional |
| 1484 | // `-{ |
| 1485 | // see compilePrecedence2 |
| 1486 | if (!Token::simpleMatch(tok, "[")) |
| 1487 | return nullptr; |
| 1488 | if (!Token::Match(tok->link(), "] (|{")) |
| 1489 | return nullptr; |
| 1490 | if (Token::simpleMatch(tok->astOperand1(), "{") && tok->astOperand1() == tok->link()->next()) |
| 1491 | return tok->astOperand1(); |
| 1492 | if (!tok->astOperand1() || tok->astOperand1()->str() != "(") |
| 1493 | return nullptr; |
| 1494 | const Token * params = tok->astOperand1(); |
| 1495 | if (!Token::simpleMatch(params->astOperand1(), "{")) |
| 1496 | return nullptr; |
| 1497 | return params->astOperand1(); |
| 1498 | } |
| 1499 | |
| 1500 | const Token* findLambdaEndTokenWithoutAST(const Token* tok) { |
| 1501 | if (!(Token::simpleMatch(tok, "[") && tok->link())) |
no test coverage detected