aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-01-07 08:54:53 +0000
committerManuel Klimek <klimek@google.com>2013-01-07 08:54:53 +0000
commit6cf581436e9e59a18f6a362027a69eaaa9b67597 (patch)
tree822343254b5e40cafa896e5f5ca7e7e4ca2ce8a6 /lib/Format/Format.cpp
parent9541938d4e3b9cbafdf0e1a28900c535b82767a4 (diff)
Fix layouting of single-line-comments preceded by an escaped newline.
Previously, we'd format int i;\ // comment as int i; // comment The problem is that the escaped newline is part of the next token, and thus the raw token text of the comment doesn't start with "//". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171713 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r--lib/Format/Format.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index a6beff0e4f..35c1e403c6 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -520,8 +520,8 @@ private:
class TokenAnnotator {
public:
TokenAnnotator(const UnwrappedLine &Line, const FormatStyle &Style,
- SourceManager &SourceMgr)
- : Line(Line), Style(Style), SourceMgr(SourceMgr) {
+ SourceManager &SourceMgr, Lexer &Lex)
+ : Line(Line), Style(Style), SourceMgr(SourceMgr), Lex(Lex) {
}
/// \brief A parser that gathers additional information about tokens.
@@ -865,10 +865,9 @@ private:
} else if (isBinaryOperator(Line.Tokens[i])) {
Annotation.Type = TokenAnnotation::TT_BinaryOperator;
} else if (Tok.Tok.is(tok::comment)) {
- // FIXME: Use Lexer::getSpelling(Tok, SourceMgr, LangOpts, bool*);
- StringRef Data(SourceMgr.getCharacterData(Tok.Tok.getLocation()),
- Tok.Tok.getLength());
- if (Data.startswith("//"))
+ std::string Data(
+ Lexer::getSpelling(Tok.Tok, SourceMgr, Lex.getLangOpts()));
+ if (StringRef(Data).startswith("//"))
Annotation.Type = TokenAnnotation::TT_LineComment;
else
Annotation.Type = TokenAnnotation::TT_BlockComment;
@@ -1012,6 +1011,7 @@ private:
const UnwrappedLine &Line;
FormatStyle Style;
SourceManager &SourceMgr;
+ Lexer &Lex;
std::vector<TokenAnnotation> Annotations;
};
@@ -1142,7 +1142,7 @@ private:
LineRange.getBegin()))
continue;
- TokenAnnotator Annotator(TheLine, Style, SourceMgr);
+ TokenAnnotator Annotator(TheLine, Style, SourceMgr, Lex);
if (!Annotator.annotate())
break;
UnwrappedLineFormatter Formatter(