Fix #15086 syntaxError for ternary with two inequalities - #8913
chrchr-github wants to merge 5 commits into
Conversation
danmar
left a comment
There was a problem hiding this comment.
This is an AI review take it with a grain of salt. Please feel free to reject it by clicking on Resolve button
Verdict: the logic looks correct to me. An unmatched : cannot appear in valid template arguments, so returning 0 there only makes template detection stricter and should not introduce false positives. Real ternary template arguments still work (existing tests cover std::array<int, B ? 1 : 2> and nested ternaries), parenthesized ternaries are skipped via the link, and :: is a separate token so it is not affected. I built the branch locally and TestSimplifyTemplate, TestTokenizer, TestSimplifyTypedef, TestVarID and TestGarbage pass (1321 tests, 0 failed). The inline comments are only style/naming nits.
The PR title still says #15XXX; please replace it with the actual trac ticket number.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
| if (tok->str() != "<") | ||
| return 0; | ||
| if (Token::Match(tok->previous(), "%var% <")) | ||
| if (Token::Match(tok->previous(), "%var%|) <")) |
There was a problem hiding this comment.
Needs to handle
template <typename T, typename U>
bool f(U u, bool b) {
return u.template operator()<T>() || b;
}
No description provided.