Lines Matching refs:State
101 const ParenState *State = FindParenState(End->Next->MatchingParen); in getLengthToMatchingParen() local
102 if (State && State->BreakBeforeClosingBrace) in getLengthToMatchingParen()
240 LineState State; in getInitialState() local
241 State.FirstIndent = FirstIndent; in getInitialState()
243 State.Column = FirstStartColumn; in getInitialState()
245 State.Column = FirstIndent; in getInitialState()
252 State.Column = 0; in getInitialState()
254 State.Line = Line; in getInitialState()
255 State.NextToken = Line->First; in getInitialState()
256 State.Stack.push_back(ParenState(/*Tok=*/nullptr, FirstIndent, FirstIndent, in getInitialState()
259 State.NoContinuation = false; in getInitialState()
260 State.StartOfStringLiteral = 0; in getInitialState()
261 State.StartOfLineLevel = 0; in getInitialState()
262 State.LowestLevelOnLine = 0; in getInitialState()
263 State.IgnoreStackForComparison = false; in getInitialState()
268 auto &CurrentState = State.Stack.back(); in getInitialState()
275 moveStateToNextToken(State, DryRun, /*Newline=*/false); in getInitialState()
276 return State; in getInitialState()
279 bool ContinuationIndenter::canBreak(const LineState &State) { in canBreak() argument
280 const FormatToken &Current = *State.NextToken; in canBreak()
282 const auto &CurrentState = State.Stack.back(); in canBreak()
302 State.LowestLevelOnLine < State.StartOfLineLevel && in canBreak()
303 State.LowestLevelOnLine < Current.NestingLevel) { in canBreak()
311 if (Previous.is(tok::l_brace) && State.Stack.size() > 1 && in canBreak()
312 State.Stack[State.Stack.size() - 2].NestedBlockInlined && in canBreak()
313 State.Stack[State.Stack.size() - 2].HasMultipleNestedBlocks) { in canBreak()
319 if (Current.is(TT_FunctionDeclarationName) && State.Column < 6) { in canBreak()
337 bool ContinuationIndenter::mustBreak(const LineState &State) { in mustBreak() argument
338 const FormatToken &Current = *State.NextToken; in mustBreak()
340 const auto &CurrentState = State.Stack.back(); in mustBreak()
343 auto LambdaBodyLength = getLengthToMatchingParen(Current, State.Stack); in mustBreak()
344 return LambdaBodyLength > getColumnLimit(State); in mustBreak()
394 getLengthToMatchingParen(Previous, State.Stack) + State.Column - 1 > in mustBreak()
395 getColumnLimit(State)) { in mustBreak()
404 (State.Column + State.Line->Last->TotalLength - Previous.TotalLength > in mustBreak()
405 getColumnLimit(State) || in mustBreak()
415 State.Line->startsWith(TT_ObjCMethodSpecifier)) { in mustBreak()
425 unsigned NewLineColumn = getNewLineColumn(State); in mustBreak()
427 State.Column + getLengthToNextOperator(Current) > Style.ColumnLimit && in mustBreak()
428 (State.Column > NewLineColumn || in mustBreak()
429 Current.NestingLevel < State.StartOfLineLevel)) { in mustBreak()
441 !(State.Column <= NewLineColumn && Style.isJavaScript()) && in mustBreak()
442 !(Previous.closesScopeAfterBlock() && State.Column <= NewLineColumn)) { in mustBreak()
453 if (!State.Line->First->is(tok::kw_enum) && State.Column <= NewLineColumn) in mustBreak()
457 (NewLineColumn == State.FirstIndent + Style.ContinuationIndentWidth || in mustBreak()
462 nextIsMultilineString(State)) { in mustBreak()
534 State.Line->Type != LT_PreprocessorDirective) { in mustBreak()
585 if (State.NoContinuation) in mustBreak()
591 unsigned ContinuationIndenter::addTokenToState(LineState &State, bool Newline, in addTokenToState() argument
594 const FormatToken &Current = *State.NextToken; in addTokenToState()
595 assert(State.NextToken->Previous); in addTokenToState()
596 const FormatToken &Previous = *State.NextToken->Previous; in addTokenToState()
598 assert(!State.Stack.empty()); in addTokenToState()
599 State.NoContinuation = false; in addTokenToState()
610 State.Column = EndColumn; in addTokenToState()
615 State.Column += EndColumn - StartColumn; in addTokenToState()
617 moveStateToNextToken(State, DryRun, /*Newline=*/false); in addTokenToState()
623 Penalty = addTokenOnNewLine(State, DryRun); in addTokenToState()
625 addTokenOnCurrentLine(State, DryRun, ExtraSpaces); in addTokenToState()
627 return moveStateToNextToken(State, DryRun, Newline) + Penalty; in addTokenToState()
630 void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun, in addTokenOnCurrentLine() argument
632 FormatToken &Current = *State.NextToken; in addTokenOnCurrentLine()
633 assert(State.NextToken->Previous); in addTokenOnCurrentLine()
634 const FormatToken &Previous = *State.NextToken->Previous; in addTokenOnCurrentLine()
635 auto &CurrentState = State.Stack.back(); in addTokenOnCurrentLine()
638 (State.Line->First->is(tok::kw_for) || Current.NestingLevel == 0) && in addTokenOnCurrentLine()
640 CurrentState.VariablePos = State.Column; in addTokenOnCurrentLine()
658 Previous.is(tok::hash) && State.FirstIndent > 0 && in addTokenOnCurrentLine()
659 &Previous == State.Line->First && in addTokenOnCurrentLine()
660 (State.Line->Type == LT_PreprocessorDirective || in addTokenOnCurrentLine()
661 State.Line->Type == LT_ImportStatement)) { in addTokenOnCurrentLine()
662 Spaces += State.FirstIndent; in addTokenOnCurrentLine()
674 State.Column + Spaces + PPColumnCorrection); in addTokenOnCurrentLine()
690 State.FirstIndent + Style.ContinuationIndentWidth, CurrentState.Indent); in addTokenOnCurrentLine()
691 unsigned FirstColonPos = State.Column + Spaces + Current.ColumnWidth; in addTokenOnCurrentLine()
709 State.Column > getNewLineColumn(State) && in addTokenOnCurrentLine()
730 CurrentState.Indent = State.Column + Spaces; in addTokenOnCurrentLine()
736 State.Column > getNewLineColumn(State)) { in addTokenOnCurrentLine()
784 State.Column += Spaces; in addTokenOnCurrentLine()
790 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
791 CurrentState.NestedBlockIndent = State.Column; in addTokenOnCurrentLine()
796 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
801 CurrentState.Indent = State.Column; in addTokenOnCurrentLine()
802 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
813 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
815 CurrentState.Indent = State.Column; in addTokenOnCurrentLine()
816 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
818 CurrentState.ColonPos = State.Column; in addTokenOnCurrentLine()
827 if (Next && Next->isMemberAccess() && State.Stack.size() > 1 && in addTokenOnCurrentLine()
828 State.Stack[State.Stack.size() - 2].CallContinuation == 0) { in addTokenOnCurrentLine()
829 CurrentState.LastSpace = State.Column; in addTokenOnCurrentLine()
835 unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State, in addTokenOnNewLine() argument
837 FormatToken &Current = *State.NextToken; in addTokenOnNewLine()
838 assert(State.NextToken->Previous); in addTokenOnNewLine()
839 const FormatToken &Previous = *State.NextToken->Previous; in addTokenOnNewLine()
840 auto &CurrentState = State.Stack.back(); in addTokenOnNewLine()
856 Penalty += State.NextToken->SplitPenalty; in addTokenOnNewLine()
862 (State.Column <= Style.ColumnLimit / 3 || in addTokenOnNewLine()
867 State.Column = getNewLineColumn(State); in addTokenOnNewLine()
881 if (State.Column > State.FirstIndent) { in addTokenOnNewLine()
883 Style.PenaltyIndentedWhitespace * (State.Column - State.FirstIndent); in addTokenOnNewLine()
900 CurrentState.NestedBlockIndent = State.Column; in addTokenOnNewLine()
905 CurrentState.CallContinuation = State.Column; in addTokenOnNewLine()
912 (shouldIndentWrappedSelectorName(Style, State.Line->Type) in addTokenOnNewLine()
914 State.FirstIndent + Style.ContinuationIndentWidth) in addTokenOnNewLine()
921 CurrentState.ColonPos = State.Column + NextNonComment->ColumnWidth; in addTokenOnNewLine()
934 if (State.Stack.size() > 1) { in addTokenOnNewLine()
935 State.Stack[State.Stack.size() - 2].LastSpace = in addTokenOnNewLine()
974 State.Line->InPPDirective && State.Line->Type != LT_ImportStatement; in addTokenOnNewLine()
975 Whitespaces.replaceWhitespace(Current, Newlines, State.Column, State.Column, in addTokenOnNewLine()
980 CurrentState.LastSpace = State.Column; in addTokenOnNewLine()
988 State.StartOfLineLevel = Current.NestingLevel; in addTokenOnNewLine()
989 State.LowestLevelOnLine = Current.NestingLevel; in addTokenOnNewLine()
994 (!Style.isCpp() && Current.is(tok::r_brace) && State.Stack.size() > 1 && in addTokenOnNewLine()
995 State.Stack[State.Stack.size() - 2].NestedBlockInlined) || in addTokenOnNewLine()
997 State.Stack.size() > 1 && !Style.ObjCBreakBeforeNestedBlockParam); in addTokenOnNewLine()
1004 for (ParenState &PState : llvm::drop_end(State.Stack)) in addTokenOnNewLine()
1043 State.Line->MustBeDeclaration) || in addTokenOnNewLine()
1045 !State.Line->MustBeDeclaration) || in addTokenOnNewLine()
1064 unsigned ContinuationIndenter::getNewLineColumn(const LineState &State) { in getNewLineColumn() argument
1065 if (!State.NextToken || !State.NextToken->Previous) in getNewLineColumn()
1068 FormatToken &Current = *State.NextToken; in getNewLineColumn()
1069 const auto &CurrentState = State.Stack.back(); in getNewLineColumn()
1094 State.Line->First->is(tok::kw_enum)) { in getNewLineColumn()
1095 return (Style.IndentWidth * State.Line->First->IndentLevel) + in getNewLineColumn()
1100 return Current.NestingLevel == 0 ? State.FirstIndent : CurrentState.Indent; in getNewLineColumn()
1105 State.Stack.size() > 1) { in getNewLineColumn()
1107 return State.Stack[State.Stack.size() - 2].NestedBlockIndent; in getNewLineColumn()
1109 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1110 return State.FirstIndent; in getNewLineColumn()
1127 if (Current.is(tok::r_paren) && State.Stack.size() > 1 && in getNewLineColumn()
1130 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1133 Current.is(tok::r_paren) && State.Stack.size() > 1) { in getNewLineColumn()
1134 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1137 return State.Stack[State.Stack.size() - 2].LastSpace; in getNewLineColumn()
1146 State.StartOfStringLiteral != 0) { in getNewLineColumn()
1147 return State.StartOfStringLiteral - 1; in getNewLineColumn()
1149 if (NextNonComment->isStringLiteral() && State.StartOfStringLiteral != 0) in getNewLineColumn()
1150 return State.StartOfStringLiteral; in getNewLineColumn()
1196 return State.FirstIndent + Style.ConstructorInitializerIndentWidth; in getNewLineColumn()
1211 if (shouldIndentWrappedSelectorName(Style, State.Line->Type)) { in getNewLineColumn()
1213 State.FirstIndent + Style.ContinuationIndentWidth); in getNewLineColumn()
1287 if (CurrentState.Indent == State.FirstIndent && PreviousNonComment && in getNewLineColumn()
1308 unsigned ContinuationIndenter::moveStateToNextToken(LineState &State, in moveStateToNextToken() argument
1310 assert(State.Stack.size()); in moveStateToNextToken()
1311 const FormatToken &Current = *State.NextToken; in moveStateToNextToken()
1312 auto &CurrentState = State.Stack.back(); in moveStateToNextToken()
1322 CurrentState.FirstLessLess = State.Column; in moveStateToNextToken()
1334 CurrentState.StartOfArraySubscripts = State.Column; in moveStateToNextToken()
1349 CurrentState.QuestionColumn = State.Column; in moveStateToNextToken()
1355 CurrentState.QuestionColumn = State.Column; in moveStateToNextToken()
1359 State.LowestLevelOnLine = in moveStateToNextToken()
1360 std::min(State.LowestLevelOnLine, Current.NestingLevel); in moveStateToNextToken()
1363 CurrentState.StartOfFunctionCall = !Current.NextOperator ? 0 : State.Column; in moveStateToNextToken()
1373 CurrentState.Indent = State.Column + (Style.BreakConstructorInitializers == in moveStateToNextToken()
1389 State.FirstIndent + Style.ConstructorInitializerIndentWidth; in moveStateToNextToken()
1396 State.FirstIndent + Style.ConstructorInitializerIndentWidth; in moveStateToNextToken()
1399 CurrentState.NestedBlockIndent = State.Column + Current.ColumnWidth + 1; in moveStateToNextToken()
1401 CurrentState.LastSpace = State.Column; in moveStateToNextToken()
1403 CurrentState.NestedBlockIndent = State.Column; in moveStateToNextToken()
1416 !Previous->is(TT_DictLiteral) && State.Stack.size() > 1 && in moveStateToNextToken()
1418 if (State.Stack[State.Stack.size() - 2].NestedBlockInlined && Newline) in moveStateToNextToken()
1419 for (ParenState &PState : llvm::drop_end(State.Stack)) in moveStateToNextToken()
1421 State.Stack[State.Stack.size() - 2].NestedBlockInlined = false; in moveStateToNextToken()
1430 moveStatePastFakeLParens(State, Newline); in moveStateToNextToken()
1431 moveStatePastScopeCloser(State); in moveStateToNextToken()
1434 bool AllowBreak = !State.Stack.back().NoLineBreak && in moveStateToNextToken()
1435 !State.Stack.back().NoLineBreakInOperand; in moveStateToNextToken()
1436 moveStatePastScopeOpener(State, Newline); in moveStateToNextToken()
1437 moveStatePastFakeRParens(State); in moveStateToNextToken()
1439 if (Current.is(TT_ObjCStringLiteral) && State.StartOfStringLiteral == 0) in moveStateToNextToken()
1440 State.StartOfStringLiteral = State.Column + 1; in moveStateToNextToken()
1441 if (Current.is(TT_CSharpStringLiteral) && State.StartOfStringLiteral == 0) { in moveStateToNextToken()
1442 State.StartOfStringLiteral = State.Column + 1; in moveStateToNextToken()
1443 } else if (Current.isStringLiteral() && State.StartOfStringLiteral == 0) { in moveStateToNextToken()
1444 State.StartOfStringLiteral = State.Column; in moveStateToNextToken()
1447 State.StartOfStringLiteral = 0; in moveStateToNextToken()
1450 State.Column += Current.ColumnWidth; in moveStateToNextToken()
1451 State.NextToken = State.NextToken->Next; in moveStateToNextToken()
1454 handleEndOfLine(Current, State, DryRun, AllowBreak, Newline); in moveStateToNextToken()
1457 Current.Role->formatFromToken(State, this, DryRun); in moveStateToNextToken()
1464 Penalty += Previous->Role->formatAfterToken(State, this, DryRun); in moveStateToNextToken()
1469 void ContinuationIndenter::moveStatePastFakeLParens(LineState &State, in moveStatePastFakeLParens() argument
1471 const FormatToken &Current = *State.NextToken; in moveStatePastFakeLParens()
1488 const auto &CurrentState = State.Stack.back(); in moveStatePastFakeLParens()
1514 std::max(State.Column, NewParenState.Indent), CurrentState.LastSpace); in moveStatePastFakeLParens()
1539 NewParenState.LastSpace = std::max(NewParenState.LastSpace, State.Column); in moveStatePastFakeLParens()
1542 NewParenState.StartOfFunctionCall = State.Column; in moveStatePastFakeLParens()
1555 NewParenState.UnindentOperator = State.Stack.back().UnindentOperator; in moveStatePastFakeLParens()
1563 State.Stack.push_back(NewParenState); in moveStatePastFakeLParens()
1568 void ContinuationIndenter::moveStatePastFakeRParens(LineState &State) { in moveStatePastFakeRParens() argument
1569 for (unsigned i = 0, e = State.NextToken->FakeRParens; i != e; ++i) { in moveStatePastFakeRParens()
1570 unsigned VariablePos = State.Stack.back().VariablePos; in moveStatePastFakeRParens()
1571 if (State.Stack.size() == 1) { in moveStatePastFakeRParens()
1575 State.Stack.pop_back(); in moveStatePastFakeRParens()
1576 State.Stack.back().VariablePos = VariablePos; in moveStatePastFakeRParens()
1579 if (State.NextToken->ClosesRequiresClause && Style.IndentRequiresClause) { in moveStatePastFakeRParens()
1582 State.Stack.back().LastSpace -= Style.IndentWidth; in moveStatePastFakeRParens()
1586 void ContinuationIndenter::moveStatePastScopeOpener(LineState &State, in moveStatePastScopeOpener() argument
1588 const FormatToken &Current = *State.NextToken; in moveStatePastScopeOpener()
1592 const auto &CurrentState = State.Stack.back(); in moveStatePastScopeOpener()
1601 moveStateToNewBlock(State); in moveStatePastScopeOpener()
1615 std::min(State.Column, CurrentState.NestedBlockIndent); in moveStatePastScopeOpener()
1632 NestedBlockIndent = std::max(NestedBlockIndent, State.Column + 1); in moveStatePastScopeOpener()
1660 (State.Line->Type != LT_ObjCDecl && Style.BinPackParameters) || in moveStatePastScopeOpener()
1661 (State.Line->Type == LT_ObjCDecl && ObjCBinPackProtocolList); in moveStatePastScopeOpener()
1666 (State.Line->MustBeDeclaration && !BinPackDeclaration) || in moveStatePastScopeOpener()
1667 (!State.Line->MustBeDeclaration && !Style.BinPackArguments) || in moveStatePastScopeOpener()
1677 if (getLengthToMatchingParen(Current, State.Stack) + State.Column > in moveStatePastScopeOpener()
1678 getColumnLimit(State)) { in moveStatePastScopeOpener()
1707 State.Stack.push_back( in moveStatePastScopeOpener()
1709 auto &NewState = State.Stack.back(); in moveStatePastScopeOpener()
1732 void ContinuationIndenter::moveStatePastScopeCloser(LineState &State) { in moveStatePastScopeCloser() argument
1733 const FormatToken &Current = *State.NextToken; in moveStatePastScopeCloser()
1739 if (State.Stack.size() > 1 && in moveStatePastScopeCloser()
1741 (Current.is(tok::r_brace) && State.NextToken != State.Line->First) || in moveStatePastScopeCloser()
1742 State.NextToken->is(TT_TemplateCloser) || in moveStatePastScopeCloser()
1744 State.Stack.pop_back(); in moveStatePastScopeCloser()
1747 auto &CurrentState = State.Stack.back(); in moveStatePastScopeCloser()
1765 getLengthToMatchingParen(CurrentScopeOpener, State.Stack) + in moveStatePastScopeCloser()
1767 if (State.Column + Current.ColumnWidth + NecessarySpaceInLine <= in moveStatePastScopeCloser()
1782 void ContinuationIndenter::moveStateToNewBlock(LineState &State) { in moveStateToNewBlock() argument
1783 unsigned NestedBlockIndent = State.Stack.back().NestedBlockIndent; in moveStateToNewBlock()
1786 NestedBlockIndent + (State.NextToken->is(TT_ObjCBlockLBrace) in moveStateToNewBlock()
1789 State.Stack.push_back(ParenState(State.NextToken, NewIndent, in moveStateToNewBlock()
1790 State.Stack.back().LastSpace, in moveStateToNewBlock()
1793 State.Stack.back().NestedBlockIndent = NestedBlockIndent; in moveStateToNewBlock()
1794 State.Stack.back().BreakBeforeParameter = true; in moveStateToNewBlock()
1811 const FormatToken &Current, LineState &State, in reformatRawStringLiteral() argument
1813 unsigned StartColumn = State.Column - Current.ColumnWidth; in reformatRawStringLiteral()
1874 ? State.Stack.back().NestedBlockIndent in reformatRawStringLiteral()
1875 : State.Stack.back().Indent; in reformatRawStringLiteral()
1899 return addMultilineToken(Current, State); in reformatRawStringLiteral()
1940 State.Column = RawLastLineEndColumn + NewSuffixSize; in reformatRawStringLiteral()
1952 for (ParenState &Paren : State.Stack) in reformatRawStringLiteral()
1959 LineState &State) { in addMultilineToken() argument
1961 for (ParenState &Paren : State.Stack) in addMultilineToken()
1964 unsigned ColumnsUsed = State.Column; in addMultilineToken()
1967 State.Column = Current.LastLineColumnWidth; in addMultilineToken()
1969 if (ColumnsUsed > getColumnLimit(State)) in addMultilineToken()
1970 return Style.PenaltyExcessCharacter * (ColumnsUsed - getColumnLimit(State)); in addMultilineToken()
1975 LineState &State, bool DryRun, in handleEndOfLine() argument
1980 auto RawStringStyle = getRawStringStyle(Current, State); in handleEndOfLine()
1982 Penalty = reformatRawStringLiteral(Current, State, *RawStringStyle, DryRun, in handleEndOfLine()
1987 Penalty = addMultilineToken(Current, State); in handleEndOfLine()
1988 } else if (State.Line->Type != LT_ImportStatement) { in handleEndOfLine()
1990 LineState OriginalState = State; in handleEndOfLine()
1999 Current, State, AllowBreak, /*DryRun=*/true, Strict); in handleEndOfLine()
2011 State = StrictState; in handleEndOfLine()
2021 if (State.Column > getColumnLimit(State)) { in handleEndOfLine()
2022 unsigned ExcessCharacters = State.Column - getColumnLimit(State); in handleEndOfLine()
2050 const LineState &State) { in getRawStringStyle() argument
2063 RawStringStyle->ColumnLimit = getColumnLimit(State); in getRawStringStyle()
2069 LineState &State, bool AllowBreak) { in createBreakableToken() argument
2070 unsigned StartColumn = State.Column - Current.ColumnWidth; in createBreakableToken()
2086 if (State.Line->Type == LT_PreprocessorDirective) in createBreakableToken()
2094 if (State.Stack.back().IsInsideObjCArrayLiteral) in createBreakableToken()
2114 unsigned UnbreakableTailLength = (State.NextToken && canBreak(State)) in createBreakableToken()
2119 State.Line->InPPDirective, Encoding, Style); in createBreakableToken()
2131 State.Line->InPPDirective, Encoding, Style, Whitespaces.useCRLF()); in createBreakableToken()
2156 LineState &State, bool AllowBreak, in breakProtrudingToken() argument
2159 createBreakableToken(Current, State, AllowBreak); in breakProtrudingToken()
2163 unsigned ColumnLimit = getColumnLimit(State); in breakProtrudingToken()
2177 unsigned StartColumn = State.Column - Current.ColumnWidth; in breakProtrudingToken()
2513 State.Column = ContentStartColumn + RemainingTokenColumns - in breakProtrudingToken()
2521 for (ParenState &Paren : State.Stack) in breakProtrudingToken()
2525 State.NoContinuation = true; in breakProtrudingToken()
2527 State.Stack.back().LastSpace = StartColumn; in breakProtrudingToken()
2530 Token->updateNextToken(State); in breakProtrudingToken()
2535 unsigned ContinuationIndenter::getColumnLimit(const LineState &State) const { in getColumnLimit()
2537 return Style.ColumnLimit - (State.Line->InPPDirective ? 2 : 0); in getColumnLimit()
2540 bool ContinuationIndenter::nextIsMultilineString(const LineState &State) { in nextIsMultilineString() argument
2541 const FormatToken &Current = *State.NextToken; in nextIsMultilineString()
2556 State.Column + Current.ColumnWidth + Current.UnbreakableTailLength > in nextIsMultilineString()