clang-format: Fix whitespaces in include directives.
Before (clang-format wouldn't change): #include "a.h" #include<a> After: #include "a.h" #include <a> This fixes llvm.org/PR16151. llvm-svn: 193683
This commit is contained in:
parent
53fe6c4d56
commit
9885784d67
|
@ -202,7 +202,11 @@ unsigned ContinuationIndenter::addTokenToState(LineState &State, bool Newline,
|
|||
unsigned ExtraSpaces) {
|
||||
const FormatToken &Current = *State.NextToken;
|
||||
|
||||
if (State.Stack.size() == 0 || Current.Type == TT_ImplicitStringLiteral) {
|
||||
if (State.Stack.size() == 0 ||
|
||||
(Current.Type == TT_ImplicitStringLiteral &&
|
||||
(Current.Previous->Tok.getIdentifierInfo() == NULL ||
|
||||
Current.Previous->Tok.getIdentifierInfo()->getPPKeywordID() ==
|
||||
tok::pp_not_keyword))) {
|
||||
// FIXME: Is this correct?
|
||||
int WhitespaceLength = SourceMgr.getSpellingColumnNumber(
|
||||
State.NextToken->WhitespaceRange.getEnd()) -
|
||||
|
@ -700,6 +704,10 @@ unsigned ContinuationIndenter::breakProtrudingToken(const FormatToken &Current,
|
|||
if (Current.Type != TT_BlockComment && Current.IsMultiline)
|
||||
return addMultilineToken(Current, State);
|
||||
|
||||
// Don't break implicit string literals.
|
||||
if (Current.Type == TT_ImplicitStringLiteral)
|
||||
return 0;
|
||||
|
||||
if (!Current.isOneOf(tok::string_literal, tok::wide_string_literal,
|
||||
tok::utf8_string_literal, tok::utf16_string_literal,
|
||||
tok::utf32_string_literal, tok::comment))
|
||||
|
|
|
@ -1450,7 +1450,8 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
|
|||
Left.Previous->Type == TT_CastRParen))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Right.Type == TT_ImplicitStringLiteral)
|
||||
return false;
|
||||
if (Right.isTrailingComment())
|
||||
// We rely on MustBreakBefore being set correctly here as we should not
|
||||
// change the "binding" behavior of a comment.
|
||||
|
|
|
@ -668,8 +668,7 @@ TEST_F(FormatTest, UnderstandsSingleLineComments) {
|
|||
"#include \"a/b/c\" // comment");
|
||||
verifyFormat("#include <a> // comment\n"
|
||||
"#include <a/b/c> // comment");
|
||||
EXPECT_EQ("#include \\\n"
|
||||
" \"a\" // comment\n"
|
||||
EXPECT_EQ("#include \"a\" // comment\n"
|
||||
"#include \"a/b/c\" // comment",
|
||||
format("#include \\\n"
|
||||
" \"a\" // comment\n"
|
||||
|
@ -4295,6 +4294,8 @@ TEST_F(FormatTest, HandlesIncludeDirectives) {
|
|||
"#include \"some long include\" // with a comment\n"
|
||||
"#include \"some very long include paaaaaaaaaaaaaaaaaaaaaaath\"",
|
||||
getLLVMStyleWithColumns(35));
|
||||
EXPECT_EQ("#include \"a.h\"", format("#include \"a.h\""));
|
||||
EXPECT_EQ("#include <a>", format("#include<a>"));
|
||||
|
||||
verifyFormat("#import <string>");
|
||||
verifyFormat("#import <a/b/c.h>");
|
||||
|
|
Loading…
Reference in New Issue