diff options
author | Daniel Jasper <djasper@google.com> | 2015-04-23 09:23:17 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2015-04-23 09:23:17 +0000 |
commit | eeee6f3fabff8a274e4f889ab7eeb610dd6021cc (patch) | |
tree | 01553cdfea3a6905ea688bc16ec46459123cd857 /lib/Format/UnwrappedLineFormatter.h | |
parent | 6e91ef37fd19cb4ee72ec6f86df1497bc080caa5 (diff) |
clang-format: Support nested block formatting with ColumnLimit=0.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235580 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/UnwrappedLineFormatter.h')
-rw-r--r-- | lib/Format/UnwrappedLineFormatter.h | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/lib/Format/UnwrappedLineFormatter.h b/lib/Format/UnwrappedLineFormatter.h index 7d5b01148b..35626338e3 100644 --- a/lib/Format/UnwrappedLineFormatter.h +++ b/lib/Format/UnwrappedLineFormatter.h @@ -40,6 +40,30 @@ public: unsigned format(const SmallVectorImpl<AnnotatedLine *> &Lines, bool DryRun, int AdditionalIndent = 0, bool FixBadIndentation = false); + + /// \brief If the \p State's next token is an r_brace closing a nested block, + /// format the nested block before it. + /// + /// Returns \c true if all children could be placed successfully and adapts + /// \p Penalty as well as \p State. If \p DryRun is false, also directly + /// creates changes using \c Whitespaces. + /// + /// The crucial idea here is that children always get formatted upon + /// encountering the closing brace right after the nested block. Now, if we + /// are currently trying to keep the "}" on the same line (i.e. \p NewLine is + /// \c false), the entire block has to be kept on the same line (which is only + /// possible if it fits on the line, only contains a single statement, etc. + /// + /// If \p NewLine is true, we format the nested block on separate lines, i.e. + /// break after the "{", format all lines with correct indentation and the put + /// the closing "}" on yet another new line. + /// + /// This enables us to keep the simple structure of the + /// \c UnwrappedLineFormatter, where we only have two options for each token: + /// break or don't break. + bool formatChildren(LineState &State, bool NewLine, bool DryRun, + unsigned &Penalty); + private: /// \brief Formats an \c AnnotatedLine and returns the penalty. /// @@ -131,29 +155,6 @@ private: void addNextStateToQueue(unsigned Penalty, StateNode *PreviousNode, bool NewLine, unsigned *Count, QueueType *Queue); - /// \brief If the \p State's next token is an r_brace closing a nested block, - /// format the nested block before it. - /// - /// Returns \c true if all children could be placed successfully and adapts - /// \p Penalty as well as \p State. If \p DryRun is false, also directly - /// creates changes using \c Whitespaces. - /// - /// The crucial idea here is that children always get formatted upon - /// encountering the closing brace right after the nested block. Now, if we - /// are currently trying to keep the "}" on the same line (i.e. \p NewLine is - /// \c false), the entire block has to be kept on the same line (which is only - /// possible if it fits on the line, only contains a single statement, etc. - /// - /// If \p NewLine is true, we format the nested block on separate lines, i.e. - /// break after the "{", format all lines with correct indentation and the put - /// the closing "}" on yet another new line. - /// - /// This enables us to keep the simple structure of the - /// \c UnwrappedLineFormatter, where we only have two options for each token: - /// break or don't break. - bool formatChildren(LineState &State, bool NewLine, bool DryRun, - unsigned &Penalty); - ContinuationIndenter *Indenter; WhitespaceManager *Whitespaces; FormatStyle Style; |