diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index ffb328f7de130b..cbf016f4b1666a 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -1651,7 +1651,7 @@ unsigned ContinuationIndenter::reformatRawStringLiteral( StringRef OldDelimiter = *getRawStringDelimiter(Current.TokenText); StringRef NewDelimiter = getCanonicalRawStringDelimiter(Style, RawStringStyle.Language); - if (NewDelimiter.empty() || OldDelimiter.empty()) + if (NewDelimiter.empty()) NewDelimiter = OldDelimiter; // The text of a raw string is between the leading 'R"delimiter(' and the // trailing 'delimiter)"'. diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 674f3e1220f7b8..120202caa3cdca 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -1137,7 +1137,7 @@ FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language) { "ParseTestProto", "ParsePartialTestProto", }, - /*CanonicalDelimiter=*/"", + /*CanonicalDelimiter=*/"pb", /*BasedOnStyle=*/"google", }, }; diff --git a/clang/unittests/Format/FormatTestRawStrings.cpp b/clang/unittests/Format/FormatTestRawStrings.cpp index 6310fe510fd3b1..6f9a0d650ba2dc 100644 --- a/clang/unittests/Format/FormatTestRawStrings.cpp +++ b/clang/unittests/Format/FormatTestRawStrings.cpp @@ -782,11 +782,16 @@ a = ParseTextProto(R"(key:value)");)test", } TEST_F(FormatTestRawStrings, UpdatesToCanonicalDelimiters) { - FormatStyle Style = getRawStringPbStyleWithColumns(25); + FormatStyle Style = getRawStringPbStyleWithColumns(35); Style.RawStringFormats[0].CanonicalDelimiter = "proto"; + Style.RawStringFormats[0].EnclosingFunctions.push_back("PARSE_TEXT_PROTO"); + expect_eq(R"test(a = R"proto(key: value)proto";)test", format(R"test(a = R"pb(key:value)pb";)test", Style)); + expect_eq(R"test(PARSE_TEXT_PROTO(R"proto(key: value)proto");)test", + format(R"test(PARSE_TEXT_PROTO(R"(key:value)");)test", Style)); + // Don't update to canonical delimiter if it occurs as a raw string suffix in // the raw string content. expect_eq(R"test(a = R"pb(key: ")proto")pb";)test",