Typz updated this revision to Diff 134411. Typz marked an inline comment as done. Typz added a comment.
Address review comments. Repository: rC Clang https://reviews.llvm.org/D43290 Files: lib/Format/TokenAnnotator.cpp unittests/Format/FormatTest.cpp Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -6650,6 +6650,15 @@ "};"); verifyFormat("#define A {a, a},"); + // Avoid breaking between equal sign and opening brace + FormatStyle AvoidBreakingFirstArgument = getLLVMStyle(); + AvoidBreakingFirstArgument.PenaltyBreakBeforeFirstCallParameter = 200; + verifyFormat("const std::unordered_map<std::string, int> MyHashTable = {\n" + " {\"aaaaaaaaaaaaaaaaaaaaa\", 0},\n" + " {\"bbbbbbbbbbbbbbbbbbbbb\", 1},\n" + " {\"ccccccccccccccccccccc\", 2}};", + AvoidBreakingFirstArgument); + // Binpacking only if there is no trailing comma verifyFormat("const Aaaaaa aaaaa = {aaaaaaaaaa, bbbbbbbbbb,\n" " cccccccccc, dddddddddd};", @@ -6806,6 +6815,15 @@ verifyFormat("vector<int> foo = { ::SomeGlobalFunction() };", ExtraSpaces); verifyFormat("const struct A a = { .a = 1, .b = 2 };", ExtraSpaces); verifyFormat("const struct A a = { [0] = 1, [1] = 2 };", ExtraSpaces); + + // Avoid breaking between equal sign and opening brace + ExtraSpaces.PenaltyBreakBeforeFirstCallParameter = 200; + verifyFormat("const std::unordered_map<std::string, int> MyHashTable = {\n" + " { \"aaaaaaaaaaaaaaaaaaaaa\", 0 },\n" + " { \"bbbbbbbbbbbbbbbbbbbbb\", 1 },\n" + " { \"ccccccccccccccccccccc\", 2 }\n" + "};", + ExtraSpaces); } TEST_F(FormatTest, FormatsBracedListsInColumnLayout) { @@ -6867,6 +6885,14 @@ " 3, cccccccccccccccccccccc};", getLLVMStyleWithColumns(60)); + // Do not break between equal and opening brace. + FormatStyle AvoidBreakingFirstArgument = getLLVMStyleWithColumns(43); + AvoidBreakingFirstArgument.PenaltyBreakBeforeFirstCallParameter = 200; + AvoidBreakingFirstArgument.ColumnLimit = 43; + verifyFormat("vector<int> aaaaaaaaaaaaaaaaaaaaaa = {\n" + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};", + AvoidBreakingFirstArgument); + // Trailing commas. verifyFormat("vector<int> x = {\n" " 1, 1, 1, 1, 1, 1, 1, 1,\n" Index: lib/Format/TokenAnnotator.cpp =================================================================== --- lib/Format/TokenAnnotator.cpp +++ lib/Format/TokenAnnotator.cpp @@ -2180,6 +2180,8 @@ if (Left.opensScope()) { if (Style.AlignAfterOpenBracket == FormatStyle::BAS_DontAlign) return 0; + if (Left.Previous && Left.Previous->is(tok::equal)) + return 19; return Left.ParameterCount > 1 ? Style.PenaltyBreakBeforeFirstCallParameter : 19; }
Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -6650,6 +6650,15 @@ "};"); verifyFormat("#define A {a, a},"); + // Avoid breaking between equal sign and opening brace + FormatStyle AvoidBreakingFirstArgument = getLLVMStyle(); + AvoidBreakingFirstArgument.PenaltyBreakBeforeFirstCallParameter = 200; + verifyFormat("const std::unordered_map<std::string, int> MyHashTable = {\n" + " {\"aaaaaaaaaaaaaaaaaaaaa\", 0},\n" + " {\"bbbbbbbbbbbbbbbbbbbbb\", 1},\n" + " {\"ccccccccccccccccccccc\", 2}};", + AvoidBreakingFirstArgument); + // Binpacking only if there is no trailing comma verifyFormat("const Aaaaaa aaaaa = {aaaaaaaaaa, bbbbbbbbbb,\n" " cccccccccc, dddddddddd};", @@ -6806,6 +6815,15 @@ verifyFormat("vector<int> foo = { ::SomeGlobalFunction() };", ExtraSpaces); verifyFormat("const struct A a = { .a = 1, .b = 2 };", ExtraSpaces); verifyFormat("const struct A a = { [0] = 1, [1] = 2 };", ExtraSpaces); + + // Avoid breaking between equal sign and opening brace + ExtraSpaces.PenaltyBreakBeforeFirstCallParameter = 200; + verifyFormat("const std::unordered_map<std::string, int> MyHashTable = {\n" + " { \"aaaaaaaaaaaaaaaaaaaaa\", 0 },\n" + " { \"bbbbbbbbbbbbbbbbbbbbb\", 1 },\n" + " { \"ccccccccccccccccccccc\", 2 }\n" + "};", + ExtraSpaces); } TEST_F(FormatTest, FormatsBracedListsInColumnLayout) { @@ -6867,6 +6885,14 @@ " 3, cccccccccccccccccccccc};", getLLVMStyleWithColumns(60)); + // Do not break between equal and opening brace. + FormatStyle AvoidBreakingFirstArgument = getLLVMStyleWithColumns(43); + AvoidBreakingFirstArgument.PenaltyBreakBeforeFirstCallParameter = 200; + AvoidBreakingFirstArgument.ColumnLimit = 43; + verifyFormat("vector<int> aaaaaaaaaaaaaaaaaaaaaa = {\n" + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};", + AvoidBreakingFirstArgument); + // Trailing commas. verifyFormat("vector<int> x = {\n" " 1, 1, 1, 1, 1, 1, 1, 1,\n" Index: lib/Format/TokenAnnotator.cpp =================================================================== --- lib/Format/TokenAnnotator.cpp +++ lib/Format/TokenAnnotator.cpp @@ -2180,6 +2180,8 @@ if (Left.opensScope()) { if (Style.AlignAfterOpenBracket == FormatStyle::BAS_DontAlign) return 0; + if (Left.Previous && Left.Previous->is(tok::equal)) + return 19; return Left.ParameterCount > 1 ? Style.PenaltyBreakBeforeFirstCallParameter : 19; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits