Author: Luis Penagos Date: 2022-02-24T10:06:40+01:00 New Revision: dbc4d281bd6954362ccfc0747893ceaae842671b
URL: https://github.com/llvm/llvm-project/commit/dbc4d281bd6954362ccfc0747893ceaae842671b DIFF: https://github.com/llvm/llvm-project/commit/dbc4d281bd6954362ccfc0747893ceaae842671b.diff LOG: [clang-format] Do not insert space after new/delete keywords in C function declarations Fixes https://github.com/llvm/llvm-project/issues/46915. Reviewed By: curdeius, HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D120374 Added: Modified: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 42c271f35be44..01c215f6ad9da 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -3299,11 +3299,15 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line, if (Left.isOneOf(tok::kw_try, Keywords.kw___except, tok::kw_catch)) return Style.SpaceBeforeParensOptions.AfterControlStatements || spaceRequiredBeforeParens(Right); - if (Left.isOneOf(tok::kw_new, tok::kw_delete) || - (Left.is(tok::r_square) && Left.MatchingParen && - Left.MatchingParen->Previous && - Left.MatchingParen->Previous->is(tok::kw_delete))) - return Style.SpaceBeforeParens != FormatStyle::SBPO_Never || + if (Left.isOneOf(tok::kw_new, tok::kw_delete)) + return ((!Line.MightBeFunctionDecl || !Left.Previous) && + Style.SpaceBeforeParens != FormatStyle::SBPO_Never) || + spaceRequiredBeforeParens(Right); + + if (Left.is(tok::r_square) && Left.MatchingParen && + Left.MatchingParen->Previous && + Left.MatchingParen->Previous->is(tok::kw_delete)) + return (Style.SpaceBeforeParens != FormatStyle::SBPO_Never) || spaceRequiredBeforeParens(Right); } if (Line.Type != LT_PreprocessorDirective && diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 98a0111d1ea40..6cd6c4ab9a602 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -9919,6 +9919,11 @@ TEST_F(FormatTest, UnderstandsNewAndDelete) { verifyFormat("void operator new(void *foo) ATTRIB;"); verifyFormat("void operator delete[](void *foo) ATTRIB;"); verifyFormat("void operator delete(void *ptr) noexcept;"); + + EXPECT_EQ("void new(link p);\n" + "void delete(link p);\n", + format("void new (link p);\n" + "void delete (link p);\n")); } TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits