Author: Owen Pan Date: 2023-04-03T21:20:41-07:00 New Revision: e16f668f5ed0699498a987be21d32f04e8bdcfbb
URL: https://github.com/llvm/llvm-project/commit/e16f668f5ed0699498a987be21d32f04e8bdcfbb DIFF: https://github.com/llvm/llvm-project/commit/e16f668f5ed0699498a987be21d32f04e8bdcfbb.diff LOG: [clang-format] Handle '_' in ud-suffix for IntegerLiteralSeparator Also, handle imaginary numbers, i.e., those with suffixes starting with an 'i'. Fixes #61676. Differential Revision: https://reviews.llvm.org/D146844 (cherry picked from commit 4d21868b09681dffb9997f1a8d0c0dac12a226d3) Added: Modified: clang/lib/Format/IntegerLiteralSeparatorFixer.cpp clang/unittests/Format/IntegerLiteralSeparatorTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp b/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp index 05e37c34a8a04..508dc82cabebc 100644 --- a/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp +++ b/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp @@ -106,6 +106,12 @@ IntegerLiteralSeparatorFixer::process(const Environment &Env, (IsBase16 && SkipHex) || B == Base::Other) { continue; } + if (Style.isCpp()) { + if (const auto Pos = Text.find_first_of("_i"); Pos != StringRef::npos) { + Text = Text.substr(0, Pos); + Length = Pos; + } + } if ((IsBase10 && Text.find_last_of(".eEfFdDmM") != StringRef::npos) || (IsBase16 && Text.find_last_of(".pP") != StringRef::npos)) { continue; @@ -116,7 +122,7 @@ IntegerLiteralSeparatorFixer::process(const Environment &Env, continue; } const auto Start = Text[0] == '0' ? 2 : 0; - auto End = Text.find_first_of("uUlLzZn"); + auto End = Text.find_first_of("uUlLzZn", Start); if (End == StringRef::npos) End = Length; if (Start > 0 || End < Length) { diff --git a/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp b/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp index 8698947818e5e..d16c321badc34 100644 --- a/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp +++ b/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp @@ -99,7 +99,21 @@ TEST_F(IntegerLiteralSeparatorTest, SingleQuoteAsSeparator) { verifyFormat("o0 = 0;\n" "o1 = 07;\n" - "o5 = 012345", + "o5 = 012345;", + Style); + + verifyFormat("bi = 0b1'0000i;\n" + "dif = 1'234if;\n" + "hil = 0xA'BCil;", + "bi = 0b10000i;\n" + "dif = 1234if;\n" + "hil = 0xABCil;", + Style); + + verifyFormat("d = 5'678_km;\n" + "h = 0xD'EF_u16;", + "d = 5678_km;\n" + "h = 0xDEF_u16;", Style); } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits