Skip to content

Commit fac7e87

Browse files
authored
[clang-format] Insert a space between new/delete and a C-style cast (#106175)
It doesn't make sense to remove the space between new/delete and a C-style cast when SpaceBeforeParensOptions.AfterPlacementOperator is set to false. Fixes #105628.
1 parent 656d5aa commit fac7e87

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

clang/lib/Format/TokenAnnotator.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4732,7 +4732,9 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
47324732
Left.isOneOf(tok::kw_new, tok::kw_delete) &&
47334733
Right.isNot(TT_OverloadedOperatorLParen) &&
47344734
!(Line.MightBeFunctionDecl && Left.is(TT_FunctionDeclarationName))) {
4735-
return Style.SpaceBeforeParensOptions.AfterPlacementOperator;
4735+
const auto *RParen = Right.MatchingParen;
4736+
return Style.SpaceBeforeParensOptions.AfterPlacementOperator ||
4737+
(RParen && RParen->is(TT_CastRParen));
47364738
}
47374739
if (Line.Type == LT_ObjCDecl)
47384740
return true;

clang/unittests/Format/FormatTest.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11749,6 +11749,7 @@ TEST_F(FormatTest, UnderstandsNewAndDelete) {
1174911749
"};",
1175011750
AfterPlacementOperator);
1175111751
verifyFormat("void operator new(void *foo) ATTRIB;", AfterPlacementOperator);
11752+
verifyFormat("delete (int *)p;", AfterPlacementOperator);
1175211753

1175311754
AfterPlacementOperator.SpaceBeforeParensOptions.AfterPlacementOperator =
1175411755
false;
@@ -11764,6 +11765,7 @@ TEST_F(FormatTest, UnderstandsNewAndDelete) {
1176411765
"};",
1176511766
AfterPlacementOperator);
1176611767
verifyFormat("void operator new(void *foo) ATTRIB;", AfterPlacementOperator);
11768+
verifyFormat("delete (int *)p;", AfterPlacementOperator);
1176711769
}
1176811770

1176911771
TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {

0 commit comments

Comments
 (0)