mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-19 09:26:59 +00:00
[clang-format] Make parseUnaryOperator non-recursive, NFCI
Summary: This patch makes the implementation of parseUnaryOperator non-recursive. We had a problem with a file starting with tens of thousands of +'es and -'es which caused clang-format to stack overflow. Reviewers: bkramer Reviewed By: bkramer Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D39498 llvm-svn: 317113
This commit is contained in:
parent
ca1aa83cbe
commit
87b42549ee
@ -1662,17 +1662,15 @@ private:
|
||||
/// \brief Parse unary operator expressions and surround them with fake
|
||||
/// parentheses if appropriate.
|
||||
void parseUnaryOperator() {
|
||||
if (!Current || Current->isNot(TT_UnaryOperator)) {
|
||||
parse(PrecedenceArrowAndPeriod);
|
||||
return;
|
||||
llvm::SmallVector<FormatToken *, 2> Tokens;
|
||||
while (Current && Current->is(TT_UnaryOperator)) {
|
||||
Tokens.push_back(Current);
|
||||
next();
|
||||
}
|
||||
|
||||
FormatToken *Start = Current;
|
||||
next();
|
||||
parseUnaryOperator();
|
||||
|
||||
// The actual precedence doesn't matter.
|
||||
addFakeParenthesis(Start, prec::Unknown);
|
||||
parse(PrecedenceArrowAndPeriod);
|
||||
for (FormatToken *Token : llvm::reverse(Tokens))
|
||||
// The actual precedence doesn't matter.
|
||||
addFakeParenthesis(Token, prec::Unknown);
|
||||
}
|
||||
|
||||
void parseConditionalExpr() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user