Author: djasper Date: Thu Mar 22 07:43:54 2018 New Revision: 328201 URL: http://llvm.org/viewvc/llvm-project?rev=328201&view=rev Log: clang-format: Narrow down raw string literal line break exception.
For multiline raw string literals, we generally want to respect the author's choice of linebreak before the 'R"(' as the rest of the raw string might be aligned to it and we cannot (commonly) modify the content. For single-line raw string literals, this doesn't make any sense and so we should just treat them as regular string literals in this regard. Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp cfe/trunk/unittests/Format/FormatTest.cpp Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=328201&r1=328200&r2=328201&view=diff ============================================================================== --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original) +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Thu Mar 22 07:43:54 2018 @@ -2830,10 +2830,10 @@ bool TokenAnnotator::mustBreakBefore(con if (Style.BreakBeforeInheritanceComma && Right.is(TT_InheritanceComma)) return true; if (Right.is(tok::string_literal) && Right.TokenText.startswith("R\"")) - // Raw string literals are special wrt. line breaks. The author has made a - // deliberate choice and might have aligned the contents of the string - // literal accordingly. Thus, we try keep existing line breaks. - return Right.NewlinesBefore > 0; + // Multiline raw string literals are special wrt. line breaks. The author + // has made a deliberate choice and might have aligned the contents of the + // string literal accordingly. Thus, we try keep existing line breaks. + return Right.IsMultiline && Right.NewlinesBefore > 0; if ((Right.Previous->is(tok::l_brace) || (Right.Previous->is(tok::less) && Right.Previous->Previous && Right.Previous->Previous->is(tok::equal))) && Modified: cfe/trunk/unittests/Format/FormatTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=328201&r1=328200&r2=328201&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTest.cpp (original) +++ cfe/trunk/unittests/Format/FormatTest.cpp Thu Mar 22 07:43:54 2018 @@ -8106,6 +8106,9 @@ TEST_F(FormatTest, CountsCharactersInMul "multiline raw string literal xxxxxxxxxxxxxx\n" ")x\" + bbbbbb);", getGoogleStyleWithColumns(20))); + EXPECT_EQ("fffffffffff(R\"(single line raw string)\" + bbbbbb);", + format("fffffffffff(\n" + " R\"(single line raw string)\" + bbbbbb);")); } TEST_F(FormatTest, SkipsUnknownStringLiterals) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits