Author: krasimir Date: Thu Apr 5 02:33:03 2018 New Revision: 329263 URL: http://llvm.org/viewvc/llvm-project?rev=329263&view=rev Log: [clang-format] Preserve spaces before a percent in (text) protos
This makes sure that we do not change the meaning of pieces of text with format specifiers. Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp cfe/trunk/unittests/Format/FormatTestProto.cpp cfe/trunk/unittests/Format/FormatTestTextProto.cpp Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=329263&r1=329262&r2=329263&view=diff ============================================================================== --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original) +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Thu Apr 5 02:33:03 2018 @@ -2518,6 +2518,10 @@ bool TokenAnnotator::spaceRequiredBefore // A percent is probably part of a formatting specification, such as %lld. if (Left.is(tok::percent)) return false; + // Preserve the existence of a space before a percent for cases like 0x%04x + // and "%d %d" + if (Left.is(tok::numeric_constant) && Right.is(tok::percent)) + return Right.WhitespaceRange.getEnd() != Right.WhitespaceRange.getBegin(); } else if (Style.Language == FormatStyle::LK_JavaScript) { if (Left.is(TT_JsFatArrow)) return true; Modified: cfe/trunk/unittests/Format/FormatTestProto.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestProto.cpp?rev=329263&r1=329262&r2=329263&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTestProto.cpp (original) +++ cfe/trunk/unittests/Format/FormatTestProto.cpp Thu Apr 5 02:33:03 2018 @@ -442,9 +442,11 @@ TEST_F(FormatTestProto, FormatsOptionsEx "};"); } -TEST_F(FormatTestProto, NoSpaceAfterPercent) { +TEST_F(FormatTestProto, SpacesAroundPercents) { verifyFormat("option (MyProto.options) = {\n" " key: %lld\n" + " key: 0x%04x\n" + " key: \"%d %d\"\n" "};"); } Modified: cfe/trunk/unittests/Format/FormatTestTextProto.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestTextProto.cpp?rev=329263&r1=329262&r2=329263&view=diff ============================================================================== --- cfe/trunk/unittests/Format/FormatTestTextProto.cpp (original) +++ cfe/trunk/unittests/Format/FormatTestTextProto.cpp Thu Apr 5 02:33:03 2018 @@ -419,8 +419,10 @@ TEST_F(FormatTestTextProto, FormatsExten "}"); } -TEST_F(FormatTestTextProto, NoSpaceAfterPercent) { +TEST_F(FormatTestTextProto, SpacesAroundPercents) { verifyFormat("key: %d"); + verifyFormat("key: 0x%04x"); + verifyFormat("key: \"%d %d\""); } TEST_F(FormatTestTextProto, FormatsRepeatedListInitializers) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits