aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/UnwrappedLineParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Format/UnwrappedLineParser.cpp')
-rw-r--r--lib/Format/UnwrappedLineParser.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp
index adb536324a..905758993e 100644
--- a/lib/Format/UnwrappedLineParser.cpp
+++ b/lib/Format/UnwrappedLineParser.cpp
@@ -74,7 +74,8 @@ private:
UnwrappedLineParser::UnwrappedLineParser(const FormatStyle &Style,
FormatTokenSource &Tokens,
UnwrappedLineConsumer &Callback)
- : Style(Style), Tokens(&Tokens), Callback(Callback) {
+ : RootTokenInitialized(false), Style(Style), Tokens(&Tokens),
+ Callback(Callback) {
}
bool UnwrappedLineParser::parse() {
@@ -493,13 +494,15 @@ void UnwrappedLineParser::parseStructOrClass() {
}
void UnwrappedLineParser::addUnwrappedLine() {
+ if (!RootTokenInitialized)
+ return;
// Consume trailing comments.
while (!eof() && FormatTok.NewlinesBefore == 0 &&
FormatTok.Tok.is(tok::comment)) {
nextToken();
}
Callback.consumeUnwrappedLine(Line);
- Line.Tokens.clear();
+ RootTokenInitialized = false;
}
bool UnwrappedLineParser::eof() const {
@@ -509,7 +512,14 @@ bool UnwrappedLineParser::eof() const {
void UnwrappedLineParser::nextToken() {
if (eof())
return;
- Line.Tokens.push_back(FormatTok);
+ if (RootTokenInitialized) {
+ LastInCurrentLine->Children.push_back(FormatTok);
+ LastInCurrentLine = &LastInCurrentLine->Children.back();
+ } else {
+ Line.RootToken = FormatTok;
+ RootTokenInitialized = true;
+ LastInCurrentLine = &Line.RootToken;
+ }
readToken();
}