https://github.com/llvmbot updated https://github.com/llvm/llvm-project/pull/135118
>From d05543ed07965560c1e2cc6f5239a22201d64813 Mon Sep 17 00:00:00 2001 From: Owen Pan <owenpi...@gmail.com> Date: Wed, 9 Apr 2025 17:52:12 -0700 Subject: [PATCH] [clang-format] Keep the space between `not` and a unary operator (#135035) Also keep the space between `not` and `::`. Based on the [documentation](https://releases.llvm.org/20.1.0/tools/clang/docs/ClangFormatStyleOptions.html#spaceafterlogicalnot), it can be argued that SpaceAfterLogicalNot doesn't cover the alternative operator `not`. Closes #125465 (cherry picked from commit f34483838937b1a01ee11ee22bdd6e13c81e9fff) --- clang/lib/Format/TokenAnnotator.cpp | 7 ++++++- clang/unittests/Format/FormatTest.cpp | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 3e1a5c7df7f77..44580d8624684 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -5436,7 +5436,12 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line, // handled. if (Left.is(tok::amp) && Right.is(tok::r_square)) return Style.SpacesInSquareBrackets; - return Style.SpaceAfterLogicalNot && Left.is(tok::exclaim); + if (Left.isNot(tok::exclaim)) + return false; + if (Left.TokenText == "!") + return Style.SpaceAfterLogicalNot; + assert(Left.TokenText == "not"); + return Right.isOneOf(tok::coloncolon, TT_UnaryOperator); } // If the next token is a binary operator or a selector name, we have diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 6508ca2e7174f..44341fbfe895f 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -25067,8 +25067,10 @@ TEST_F(FormatTest, AlternativeOperators) { verifyFormat("%:define ABC abc"); // #define ABC abc verifyFormat("%:%:"); // ## + verifyFormat("return not ::f();"); + verifyFormat("return not *foo;"); + verifyFormat("a = v(not;);\n" - "b = v(not+);\n" "c = v(not x);\n" "d = v(not 1);\n" "e = v(not 123.f);"); @@ -25076,7 +25078,6 @@ TEST_F(FormatTest, AlternativeOperators) { verifyNoChange("#define ASSEMBLER_INSTRUCTION_LIST(V) \\\n" " V(and) \\\n" " V(not) \\\n" - " V(not!) \\\n" " V(other)", getLLVMStyleWithColumns(40)); } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits