Hi djasper,
http://reviews.llvm.org/D6636
Files:
docs/ClangFormatStyleOptions.rst
include/clang/Format/Format.h
lib/Format/ContinuationIndenter.cpp
lib/Format/Format.cpp
unittests/Format/FormatTest.cpp
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
Index: docs/ClangFormatStyleOptions.rst
===================================================================
--- docs/ClangFormatStyleOptions.rst
+++ docs/ClangFormatStyleOptions.rst
@@ -269,6 +269,10 @@
Always break constructor initializers before commas and align
the commas with the colon.
+**BreakSingleLineRawStrings** (``bool``)
+ Allow breaking single-line raw string literals. Multi-line string
+ literals are always left alone.
+
**ColumnLimit** (``unsigned``)
The column limit.
Index: include/clang/Format/Format.h
===================================================================
--- include/clang/Format/Format.h
+++ include/clang/Format/Format.h
@@ -278,6 +278,10 @@
/// \brief If \c true, always break before multiline string literals.
bool AlwaysBreakBeforeMultilineStrings;
+ /// \brief Allow breaking single-line raw string literals. Multi-line string
+ /// literals are always left alone.
+ bool BreakSingleLineRawStrings;
+
/// \brief Different ways to use tab in formatting.
enum UseTabStyle {
/// Never use tab.
@@ -428,6 +432,7 @@
R.AlwaysBreakTemplateDeclarations &&
AlwaysBreakBeforeMultilineStrings ==
R.AlwaysBreakBeforeMultilineStrings &&
+ BreakSingleLineRawStrings == R.BreakSingleLineRawStrings &&
BinPackParameters == R.BinPackParameters &&
BinPackArguments == R.BinPackArguments &&
BreakBeforeBinaryOperators == R.BreakBeforeBinaryOperators &&
Index: lib/Format/ContinuationIndenter.cpp
===================================================================
--- lib/Format/ContinuationIndenter.cpp
+++ lib/Format/ContinuationIndenter.cpp
@@ -1016,7 +1016,8 @@
Text.startswith(Prefix = "u8\"") ||
Text.startswith(Prefix = "L\""))) ||
(Text.startswith(Prefix = "_T(\"") && Text.endswith(Postfix = "\")")) ||
- getRawStringLiteralPrefixPostfix(Text, Prefix, Postfix)) {
+ (Style.BreakSingleLineRawStrings &&
+ getRawStringLiteralPrefixPostfix(Text, Prefix, Postfix))) {
Token.reset(new BreakableStringLiteral(
Current, State.Line->Level, StartColumn, Prefix, Postfix,
State.Line->InPPDirective, Encoding, Style));
Index: lib/Format/Format.cpp
===================================================================
--- lib/Format/Format.cpp
+++ lib/Format/Format.cpp
@@ -200,6 +200,8 @@
Style.BreakBeforeTernaryOperators);
IO.mapOptional("BreakConstructorInitializersBeforeComma",
Style.BreakConstructorInitializersBeforeComma);
+ IO.mapOptional("BreakSingleLineRawStrings",
+ Style.BreakSingleLineRawStrings);
IO.mapOptional("BinPackParameters", Style.BinPackParameters);
IO.mapOptional("BinPackArguments", Style.BinPackArguments);
IO.mapOptional("ColumnLimit", Style.ColumnLimit);
@@ -346,6 +348,7 @@
LLVMStyle.BreakBeforeTernaryOperators = true;
LLVMStyle.BreakBeforeBraces = FormatStyle::BS_Attach;
LLVMStyle.BreakConstructorInitializersBeforeComma = false;
+ LLVMStyle.BreakSingleLineRawStrings = false;
LLVMStyle.ColumnLimit = 80;
LLVMStyle.CommentPragmas = "^ IWYU pragma:";
LLVMStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = false;
Index: unittests/Format/FormatTest.cpp
===================================================================
--- unittests/Format/FormatTest.cpp
+++ unittests/Format/FormatTest.cpp
@@ -7387,21 +7387,40 @@
}
TEST_F(FormatTest, BreaksRawStringLiterals) {
+ FormatStyle Style = getGoogleStyleWithColumns(15);
+ Style.BreakSingleLineRawStrings = true;
EXPECT_EQ("R\"x(raw )x\"\n"
"R\"x(literal)x\";",
- format("R\"x(raw literal)x\";", getGoogleStyleWithColumns(15)));
+ format("R\"x(raw literal)x\";", Style));
+
+ Style.ColumnLimit = 16;
EXPECT_EQ("uR\"x(raw )x\"\n"
"uR\"x(literal)x\";",
- format("uR\"x(raw literal)x\";", getGoogleStyleWithColumns(16)));
- EXPECT_EQ("u8R\"x(raw )x\"\n"
- "u8R\"x(literal)x\";",
- format("u8R\"x(raw literal)x\";", getGoogleStyleWithColumns(17)));
+ format("uR\"x(raw literal)x\";", Style));
EXPECT_EQ("LR\"x(raw )x\"\n"
"LR\"x(literal)x\";",
- format("LR\"x(raw literal)x\";", getGoogleStyleWithColumns(16)));
+ format("LR\"x(raw literal)x\";", Style));
EXPECT_EQ("UR\"x(raw )x\"\n"
"UR\"x(literal)x\";",
- format("UR\"x(raw literal)x\";", getGoogleStyleWithColumns(16)));
+ format("UR\"x(raw literal)x\";", Style));
+
+ Style.ColumnLimit = 17;
+ EXPECT_EQ("u8R\"x(raw )x\"\n"
+ "u8R\"x(literal)x\";",
+ format("u8R\"x(raw literal)x\";", Style));
+
+ Style.BreakSingleLineRawStrings = false;
+ Style.ColumnLimit = 15;
+ EXPECT_EQ("R\"x(raw literal)x\";", format("R\"x(raw literal)x\";", Style));
+
+ Style.ColumnLimit = 16;
+ EXPECT_EQ("uR\"x(raw literal)x\";", format("uR\"x(raw literal)x\";", Style));
+ EXPECT_EQ("LR\"x(raw literal)x\";", format("LR\"x(raw literal)x\";", Style));
+ EXPECT_EQ("UR\"x(raw literal)x\";", format("UR\"x(raw literal)x\";", Style));
+
+ Style.ColumnLimit = 17;
+ EXPECT_EQ("u8R\"x(raw literal)x\";",
+ format("u8R\"x(raw literal)x\";", Style));
}
TEST_F(FormatTest, BreaksStringLiteralsWithin_TMacro) {
@@ -7592,9 +7611,11 @@
format("\"test\\000000000001\"", getLLVMStyleWithColumns(10)));
// FIXME: We probably don't need to care about escape sequences in raw
// literals.
+ FormatStyle Style = getGoogleStyleWithColumns(7);
+ Style.BreakSingleLineRawStrings = true;
EXPECT_EQ("R\"(\\x)\"\n"
"R\"(\\x00)\"\n",
- format("R\"(\\x\\x00)\"\n", getGoogleStyleWithColumns(7)));
+ format("R\"(\\x\\x00)\"\n", Style));
}
TEST_F(FormatTest, DoNotCreateUnreasonableUnwrappedLines) {
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits