Lines Matching refs:State
102 const ParenState *State = FindParenState(End->Next->MatchingParen); in getLengthToMatchingParen() local
103 if (State && State->BreakBeforeClosingBrace) in getLengthToMatchingParen()
241 LineState State; in getInitialState() local
242 State.FirstIndent = FirstIndent; in getInitialState()
244 State.Column = FirstStartColumn; in getInitialState()
246 State.Column = FirstIndent; in getInitialState()
253 State.Column = 0; in getInitialState()
255 State.Line = Line; in getInitialState()
256 State.NextToken = Line->First; in getInitialState()
257 State.Stack.push_back(ParenState(/*Tok=*/nullptr, FirstIndent, FirstIndent, in getInitialState()
260 State.NoContinuation = false; in getInitialState()
261 State.StartOfStringLiteral = 0; in getInitialState()
262 State.StartOfLineLevel = 0; in getInitialState()
263 State.LowestLevelOnLine = 0; in getInitialState()
264 State.IgnoreStackForComparison = false; in getInitialState()
269 auto &CurrentState = State.Stack.back(); in getInitialState()
276 moveStateToNextToken(State, DryRun, /*Newline=*/false); in getInitialState()
277 return State; in getInitialState()
280 bool ContinuationIndenter::canBreak(const LineState &State) { in canBreak() argument
281 const FormatToken &Current = *State.NextToken; in canBreak()
283 const auto &CurrentState = State.Stack.back(); in canBreak()
303 State.LowestLevelOnLine < State.StartOfLineLevel && in canBreak()
304 State.LowestLevelOnLine < Current.NestingLevel) { in canBreak()
312 if (Previous.is(tok::l_brace) && State.Stack.size() > 1 && in canBreak()
313 State.Stack[State.Stack.size() - 2].NestedBlockInlined && in canBreak()
314 State.Stack[State.Stack.size() - 2].HasMultipleNestedBlocks) { in canBreak()
320 if (Current.is(TT_FunctionDeclarationName) && State.Column < 6) { in canBreak()
347 bool ContinuationIndenter::mustBreak(const LineState &State) { in mustBreak() argument
348 const FormatToken &Current = *State.NextToken; in mustBreak()
350 const auto &CurrentState = State.Stack.back(); in mustBreak()
353 auto LambdaBodyLength = getLengthToMatchingParen(Current, State.Stack); in mustBreak()
354 return LambdaBodyLength > getColumnLimit(State); in mustBreak()
408 getLengthToMatchingParen(Previous, State.Stack) + State.Column - 1 > in mustBreak()
409 getColumnLimit(State)) { in mustBreak()
418 (State.Column + State.Line->Last->TotalLength - Previous.TotalLength > in mustBreak()
419 getColumnLimit(State) || in mustBreak()
429 State.Line->startsWith(TT_ObjCMethodSpecifier)) { in mustBreak()
439 unsigned NewLineColumn = getNewLineColumn(State); in mustBreak()
441 State.Column + getLengthToNextOperator(Current) > Style.ColumnLimit && in mustBreak()
442 (State.Column > NewLineColumn || in mustBreak()
443 Current.NestingLevel < State.StartOfLineLevel)) { in mustBreak()
455 !(State.Column <= NewLineColumn && Style.isJavaScript()) && in mustBreak()
456 !(Previous.closesScopeAfterBlock() && State.Column <= NewLineColumn)) { in mustBreak()
467 if (!State.Line->First->is(tok::kw_enum) && State.Column <= NewLineColumn) in mustBreak()
471 (NewLineColumn == State.FirstIndent + Style.ContinuationIndentWidth || in mustBreak()
476 nextIsMultilineString(State)) { in mustBreak()
548 State.Line->Type != LT_PreprocessorDirective) { in mustBreak()
569 !State.Line->ReturnTypeWrapped && in mustBreak()
600 if (State.NoContinuation) in mustBreak()
606 unsigned ContinuationIndenter::addTokenToState(LineState &State, bool Newline, in addTokenToState() argument
609 const FormatToken &Current = *State.NextToken; in addTokenToState()
610 assert(State.NextToken->Previous); in addTokenToState()
611 const FormatToken &Previous = *State.NextToken->Previous; in addTokenToState()
613 assert(!State.Stack.empty()); in addTokenToState()
614 State.NoContinuation = false; in addTokenToState()
625 State.Column = EndColumn; in addTokenToState()
630 State.Column += EndColumn - StartColumn; in addTokenToState()
632 moveStateToNextToken(State, DryRun, /*Newline=*/false); in addTokenToState()
638 Penalty = addTokenOnNewLine(State, DryRun); in addTokenToState()
640 addTokenOnCurrentLine(State, DryRun, ExtraSpaces); in addTokenToState()
642 return moveStateToNextToken(State, DryRun, Newline) + Penalty; in addTokenToState()
645 void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun, in addTokenOnCurrentLine() argument
647 FormatToken &Current = *State.NextToken; in addTokenOnCurrentLine()
648 assert(State.NextToken->Previous); in addTokenOnCurrentLine()
649 const FormatToken &Previous = *State.NextToken->Previous; in addTokenOnCurrentLine()
650 auto &CurrentState = State.Stack.back(); in addTokenOnCurrentLine()
653 (State.Line->First->is(tok::kw_for) || Current.NestingLevel == 0) && in addTokenOnCurrentLine()
655 CurrentState.VariablePos = State.Column; in addTokenOnCurrentLine()
673 Previous.is(tok::hash) && State.FirstIndent > 0 && in addTokenOnCurrentLine()
674 &Previous == State.Line->First && in addTokenOnCurrentLine()
675 (State.Line->Type == LT_PreprocessorDirective || in addTokenOnCurrentLine()
676 State.Line->Type == LT_ImportStatement)) { in addTokenOnCurrentLine()
677 Spaces += State.FirstIndent; in addTokenOnCurrentLine()
689 State.Column + Spaces + PPColumnCorrection); in addTokenOnCurrentLine()
705 State.FirstIndent + Style.ContinuationIndentWidth, CurrentState.Indent); in addTokenOnCurrentLine()
706 unsigned FirstColonPos = State.Column + Spaces + Current.ColumnWidth; in addTokenOnCurrentLine()
724 State.Column > getNewLineColumn(State) && in addTokenOnCurrentLine()
746 CurrentState.Indent = State.Column + Spaces; in addTokenOnCurrentLine()
752 State.Column > getNewLineColumn(State)) { in addTokenOnCurrentLine()
800 State.Column += Spaces; in addTokenOnCurrentLine()
806 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
807 CurrentState.NestedBlockIndent = State.Column; in addTokenOnCurrentLine()
812 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
817 CurrentState.Indent = State.Column; in addTokenOnCurrentLine()
818 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
829 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
831 CurrentState.Indent = State.Column; in addTokenOnCurrentLine()
832 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
834 CurrentState.ColonPos = State.Column; in addTokenOnCurrentLine()
843 if (Next && Next->isMemberAccess() && State.Stack.size() > 1 && in addTokenOnCurrentLine()
844 State.Stack[State.Stack.size() - 2].CallContinuation == 0) { in addTokenOnCurrentLine()
845 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
851 unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State, in addTokenOnNewLine() argument
853 FormatToken &Current = *State.NextToken; in addTokenOnNewLine()
854 assert(State.NextToken->Previous); in addTokenOnNewLine()
855 const FormatToken &Previous = *State.NextToken->Previous; in addTokenOnNewLine()
856 auto &CurrentState = State.Stack.back(); in addTokenOnNewLine()
872 Penalty += State.NextToken->SplitPenalty; in addTokenOnNewLine()
878 (State.Column <= Style.ColumnLimit / 3 || in addTokenOnNewLine()
883 State.Column = getNewLineColumn(State); in addTokenOnNewLine()
897 if (State.Column > State.FirstIndent) { in addTokenOnNewLine()
899 Style.PenaltyIndentedWhitespace * (State.Column - State.FirstIndent); in addTokenOnNewLine()
916 CurrentState.NestedBlockIndent = State.Column; in addTokenOnNewLine()
921 CurrentState.CallContinuation = State.Column; in addTokenOnNewLine()
928 (shouldIndentWrappedSelectorName(Style, State.Line->Type) in addTokenOnNewLine()
930 State.FirstIndent + Style.ContinuationIndentWidth) in addTokenOnNewLine()
937 CurrentState.ColonPos = State.Column + NextNonComment->ColumnWidth; in addTokenOnNewLine()
950 if (State.Stack.size() > 1) { in addTokenOnNewLine()
951 State.Stack[State.Stack.size() - 2].LastSpace = in addTokenOnNewLine()
990 State.Line->InPPDirective && State.Line->Type != LT_ImportStatement; in addTokenOnNewLine()
991 Whitespaces.replaceWhitespace(Current, Newlines, State.Column, State.Column, in addTokenOnNewLine()
996 CurrentState.LastSpace = State.Column; in addTokenOnNewLine()
1004 State.StartOfLineLevel = Current.NestingLevel; in addTokenOnNewLine()
1005 State.LowestLevelOnLine = Current.NestingLevel; in addTokenOnNewLine()
1010 (!Style.isCpp() && Current.is(tok::r_brace) && State.Stack.size() > 1 && in addTokenOnNewLine()
1011 State.Stack[State.Stack.size() - 2].NestedBlockInlined) || in addTokenOnNewLine()
1013 State.Stack.size() > 1 && !Style.ObjCBreakBeforeNestedBlockParam); in addTokenOnNewLine()
1020 for (ParenState &PState : llvm::drop_end(State.Stack)) in addTokenOnNewLine()
1059 State.Line->MustBeDeclaration) || in addTokenOnNewLine()
1061 !State.Line->MustBeDeclaration) || in addTokenOnNewLine()
1080 unsigned ContinuationIndenter::getNewLineColumn(const LineState &State) { in getNewLineColumn() argument
1081 if (!State.NextToken || !State.NextToken->Previous) in getNewLineColumn()
1084 FormatToken &Current = *State.NextToken; in getNewLineColumn()
1085 const auto &CurrentState = State.Stack.back(); in getNewLineColumn()
1114 State.Line->First->is(tok::kw_enum))) { in getNewLineColumn()
1115 return (Style.IndentWidth * State.Line->First->IndentLevel) + in getNewLineColumn()
1120 return Current.NestingLevel == 0 ? State.FirstIndent : CurrentState.Indent; in getNewLineColumn()
1125 State.Stack.size() > 1) { in getNewLineColumn()
1127 return State.Stack[State.Stack.size() - 2].NestedBlockIndent; in getNewLineColumn()
1129 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1130 return State.FirstIndent; in getNewLineColumn()
1147 if (Current.is(tok::r_paren) && State.Stack.size() > 1 && in getNewLineColumn()
1150 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1153 Current.is(tok::r_paren) && State.Stack.size() > 1) { in getNewLineColumn()
1154 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1157 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1166 State.StartOfStringLiteral != 0) { in getNewLineColumn()
1167 return State.StartOfStringLiteral - 1; in getNewLineColumn()
1169 if (NextNonComment->isStringLiteral() && State.StartOfStringLiteral != 0) in getNewLineColumn()
1170 return State.StartOfStringLiteral; in getNewLineColumn()
1216 return State.FirstIndent + Style.ConstructorInitializerIndentWidth; in getNewLineColumn()
1231 if (shouldIndentWrappedSelectorName(Style, State.Line->Type)) { in getNewLineColumn()
1233 State.FirstIndent + Style.ContinuationIndentWidth); in getNewLineColumn()
1267 if (State.Line->InPragmaDirective) in getNewLineColumn()
1310 if (CurrentState.Indent == State.FirstIndent && PreviousNonComment && in getNewLineColumn()
1331 unsigned ContinuationIndenter::moveStateToNextToken(LineState &State, in moveStateToNextToken() argument
1333 assert(State.Stack.size()); in moveStateToNextToken()
1334 const FormatToken &Current = *State.NextToken; in moveStateToNextToken()
1335 auto &CurrentState = State.Stack.back(); in moveStateToNextToken()
1345 CurrentState.FirstLessLess = State.Column; in moveStateToNextToken()
1357 CurrentState.StartOfArraySubscripts = State.Column; in moveStateToNextToken()
1372 CurrentState.QuestionColumn = State.Column; in moveStateToNextToken()
1378 CurrentState.QuestionColumn = State.Column; in moveStateToNextToken()
1382 State.LowestLevelOnLine = in moveStateToNextToken()
1383 std::min(State.LowestLevelOnLine, Current.NestingLevel); in moveStateToNextToken()
1386 CurrentState.StartOfFunctionCall = !Current.NextOperator ? 0 : State.Column; in moveStateToNextToken()
1396 CurrentState.Indent = State.Column + (Style.BreakConstructorInitializers == in moveStateToNextToken()
1412 State.FirstIndent + Style.ConstructorInitializerIndentWidth; in moveStateToNextToken()
1419 State.FirstIndent + Style.ConstructorInitializerIndentWidth; in moveStateToNextToken()
1422 CurrentState.NestedBlockIndent = State.Column + Current.ColumnWidth + 1; in moveStateToNextToken()
1424 CurrentState.LastSpace = State.Column; in moveStateToNextToken()
1427 CurrentState.NestedBlockIndent = State.Column; in moveStateToNextToken()
1441 !Previous->is(TT_DictLiteral) && State.Stack.size() > 1 && in moveStateToNextToken()
1443 if (State.Stack[State.Stack.size() - 2].NestedBlockInlined && Newline) in moveStateToNextToken()
1444 for (ParenState &PState : llvm::drop_end(State.Stack)) in moveStateToNextToken()
1446 State.Stack[State.Stack.size() - 2].NestedBlockInlined = false; in moveStateToNextToken()
1455 moveStatePastFakeLParens(State, Newline); in moveStateToNextToken()
1456 moveStatePastScopeCloser(State); in moveStateToNextToken()
1459 bool AllowBreak = !State.Stack.back().NoLineBreak && in moveStateToNextToken()
1460 !State.Stack.back().NoLineBreakInOperand; in moveStateToNextToken()
1461 moveStatePastScopeOpener(State, Newline); in moveStateToNextToken()
1462 moveStatePastFakeRParens(State); in moveStateToNextToken()
1464 if (Current.is(TT_ObjCStringLiteral) && State.StartOfStringLiteral == 0) in moveStateToNextToken()
1465 State.StartOfStringLiteral = State.Column + 1; in moveStateToNextToken()
1466 if (Current.is(TT_CSharpStringLiteral) && State.StartOfStringLiteral == 0) { in moveStateToNextToken()
1467 State.StartOfStringLiteral = State.Column + 1; in moveStateToNextToken()
1468 } else if (Current.isStringLiteral() && State.StartOfStringLiteral == 0) { in moveStateToNextToken()
1469 State.StartOfStringLiteral = State.Column; in moveStateToNextToken()
1472 State.StartOfStringLiteral = 0; in moveStateToNextToken()
1475 State.Column += Current.ColumnWidth; in moveStateToNextToken()
1476 State.NextToken = State.NextToken->Next; in moveStateToNextToken()
1479 handleEndOfLine(Current, State, DryRun, AllowBreak, Newline); in moveStateToNextToken()
1482 Current.Role->formatFromToken(State, this, DryRun); in moveStateToNextToken()
1489 Penalty += Previous->Role->formatAfterToken(State, this, DryRun); in moveStateToNextToken()
1494 void ContinuationIndenter::moveStatePastFakeLParens(LineState &State, in moveStatePastFakeLParens() argument
1496 const FormatToken &Current = *State.NextToken; in moveStatePastFakeLParens()
1513 const auto &CurrentState = State.Stack.back(); in moveStatePastFakeLParens()
1539 std::max(State.Column, NewParenState.Indent), CurrentState.LastSpace); in moveStatePastFakeLParens()
1570 NewParenState.LastSpace = std::max(NewParenState.LastSpace, State.Column); in moveStatePastFakeLParens()
1573 NewParenState.StartOfFunctionCall = State.Column; in moveStatePastFakeLParens()
1586 NewParenState.UnindentOperator = State.Stack.back().UnindentOperator; in moveStatePastFakeLParens()
1594 State.Stack.push_back(NewParenState); in moveStatePastFakeLParens()
1599 void ContinuationIndenter::moveStatePastFakeRParens(LineState &State) { in moveStatePastFakeRParens() argument
1600 for (unsigned i = 0, e = State.NextToken->FakeRParens; i != e; ++i) { in moveStatePastFakeRParens()
1601 unsigned VariablePos = State.Stack.back().VariablePos; in moveStatePastFakeRParens()
1602 if (State.Stack.size() == 1) { in moveStatePastFakeRParens()
1606 State.Stack.pop_back(); in moveStatePastFakeRParens()
1607 State.Stack.back().VariablePos = VariablePos; in moveStatePastFakeRParens()
1610 if (State.NextToken->ClosesRequiresClause && Style.IndentRequiresClause) { in moveStatePastFakeRParens()
1613 State.Stack.back().LastSpace -= Style.IndentWidth; in moveStatePastFakeRParens()
1617 void ContinuationIndenter::moveStatePastScopeOpener(LineState &State, in moveStatePastScopeOpener() argument
1619 const FormatToken &Current = *State.NextToken; in moveStatePastScopeOpener()
1623 const auto &CurrentState = State.Stack.back(); in moveStatePastScopeOpener()
1632 moveStateToNewBlock(State); in moveStatePastScopeOpener()
1646 std::min(State.Column, CurrentState.NestedBlockIndent); in moveStatePastScopeOpener()
1663 NestedBlockIndent = std::max(NestedBlockIndent, State.Column + 1); in moveStatePastScopeOpener()
1691 (State.Line->Type != LT_ObjCDecl && Style.BinPackParameters) || in moveStatePastScopeOpener()
1692 (State.Line->Type == LT_ObjCDecl && ObjCBinPackProtocolList); in moveStatePastScopeOpener()
1701 (State.Line->MustBeDeclaration && !BinPackDeclaration) || in moveStatePastScopeOpener()
1702 (!State.Line->MustBeDeclaration && !Style.BinPackArguments) || in moveStatePastScopeOpener()
1712 if (getLengthToMatchingParen(Current, State.Stack) + State.Column > in moveStatePastScopeOpener()
1713 getColumnLimit(State)) { in moveStatePastScopeOpener()
1742 State.Stack.push_back( in moveStatePastScopeOpener()
1744 auto &NewState = State.Stack.back(); in moveStatePastScopeOpener()
1767 void ContinuationIndenter::moveStatePastScopeCloser(LineState &State) { in moveStatePastScopeCloser() argument
1768 const FormatToken &Current = *State.NextToken; in moveStatePastScopeCloser()
1774 if (State.Stack.size() > 1 && in moveStatePastScopeCloser()
1776 (Current.is(tok::r_brace) && State.NextToken != State.Line->First) || in moveStatePastScopeCloser()
1777 State.NextToken->is(TT_TemplateCloser) || in moveStatePastScopeCloser()
1779 State.Stack.pop_back(); in moveStatePastScopeCloser()
1782 auto &CurrentState = State.Stack.back(); in moveStatePastScopeCloser()
1800 getLengthToMatchingParen(CurrentScopeOpener, State.Stack) + in moveStatePastScopeCloser()
1802 if (State.Column + Current.ColumnWidth + NecessarySpaceInLine <= in moveStatePastScopeCloser()
1817 void ContinuationIndenter::moveStateToNewBlock(LineState &State) { in moveStateToNewBlock() argument
1818 unsigned NestedBlockIndent = State.Stack.back().NestedBlockIndent; in moveStateToNewBlock()
1821 NestedBlockIndent + (State.NextToken->is(TT_ObjCBlockLBrace) in moveStateToNewBlock()
1824 State.Stack.push_back(ParenState(State.NextToken, NewIndent, in moveStateToNewBlock()
1825 State.Stack.back().LastSpace, in moveStateToNewBlock()
1828 State.Stack.back().NestedBlockIndent = NestedBlockIndent; in moveStateToNewBlock()
1829 State.Stack.back().BreakBeforeParameter = true; in moveStateToNewBlock()
1846 const FormatToken &Current, LineState &State, in reformatRawStringLiteral() argument
1848 unsigned StartColumn = State.Column - Current.ColumnWidth; in reformatRawStringLiteral()
1909 ? State.Stack.back().NestedBlockIndent in reformatRawStringLiteral()
1910 : State.Stack.back().Indent; in reformatRawStringLiteral()
1934 return addMultilineToken(Current, State); in reformatRawStringLiteral()
1975 State.Column = RawLastLineEndColumn + NewSuffixSize; in reformatRawStringLiteral()
1987 for (ParenState &Paren : State.Stack) in reformatRawStringLiteral()
1994 LineState &State) { in addMultilineToken() argument
1996 for (ParenState &Paren : State.Stack) in addMultilineToken()
1999 unsigned ColumnsUsed = State.Column; in addMultilineToken()
2002 State.Column = Current.LastLineColumnWidth; in addMultilineToken()
2004 if (ColumnsUsed > getColumnLimit(State)) in addMultilineToken()
2005 return Style.PenaltyExcessCharacter * (ColumnsUsed - getColumnLimit(State)); in addMultilineToken()
2010 LineState &State, bool DryRun, in handleEndOfLine() argument
2015 auto RawStringStyle = getRawStringStyle(Current, State); in handleEndOfLine()
2017 Penalty = reformatRawStringLiteral(Current, State, *RawStringStyle, DryRun, in handleEndOfLine()
2022 Penalty = addMultilineToken(Current, State); in handleEndOfLine()
2023 } else if (State.Line->Type != LT_ImportStatement) { in handleEndOfLine()
2025 LineState OriginalState = State; in handleEndOfLine()
2034 Current, State, AllowBreak, /*DryRun=*/true, Strict); in handleEndOfLine()
2046 State = StrictState; in handleEndOfLine()
2056 if (State.Column > getColumnLimit(State)) { in handleEndOfLine()
2057 unsigned ExcessCharacters = State.Column - getColumnLimit(State); in handleEndOfLine()
2085 const LineState &State) { in getRawStringStyle() argument
2098 RawStringStyle->ColumnLimit = getColumnLimit(State); in getRawStringStyle()
2104 LineState &State, bool AllowBreak) { in createBreakableToken() argument
2105 unsigned StartColumn = State.Column - Current.ColumnWidth; in createBreakableToken()
2121 if (State.Line->Type == LT_PreprocessorDirective) in createBreakableToken()
2129 if (State.Stack.back().IsInsideObjCArrayLiteral) in createBreakableToken()
2149 unsigned UnbreakableTailLength = (State.NextToken && canBreak(State)) in createBreakableToken()
2154 State.Line->InPPDirective, Encoding, Style); in createBreakableToken()
2166 State.Line->InPPDirective, Encoding, Style, Whitespaces.useCRLF()); in createBreakableToken()
2191 LineState &State, bool AllowBreak, in breakProtrudingToken() argument
2194 createBreakableToken(Current, State, AllowBreak); in breakProtrudingToken()
2198 unsigned ColumnLimit = getColumnLimit(State); in breakProtrudingToken()
2212 unsigned StartColumn = State.Column - Current.ColumnWidth; in breakProtrudingToken()
2548 State.Column = ContentStartColumn + RemainingTokenColumns - in breakProtrudingToken()
2556 for (ParenState &Paren : State.Stack) in breakProtrudingToken()
2560 State.NoContinuation = true; in breakProtrudingToken()
2562 State.Stack.back().LastSpace = StartColumn; in breakProtrudingToken()
2565 Token->updateNextToken(State); in breakProtrudingToken()
2570 unsigned ContinuationIndenter::getColumnLimit(const LineState &State) const { in getColumnLimit()
2572 return Style.ColumnLimit - (State.Line->InPPDirective ? 2 : 0); in getColumnLimit()
2575 bool ContinuationIndenter::nextIsMultilineString(const LineState &State) { in nextIsMultilineString() argument
2576 const FormatToken &Current = *State.NextToken; in nextIsMultilineString()
2591 State.Column + Current.ColumnWidth + Current.UnbreakableTailLength > in nextIsMultilineString()