[clang-format] Do not add space after return-like keywords in macros.

Fixes https://github.com/llvm/llvm-project/issues/33336.

Reviewed By: HazardyKnusperkeks, owenpan

Differential Revision: https://reviews.llvm.org/D120028
This commit is contained in:
Marek Kurdej 2022-02-17 11:10:41 +01:00
parent 6c80e38554
commit 331e8e4e27
2 changed files with 13 additions and 2 deletions

View File

@ -2989,7 +2989,8 @@ bool TokenAnnotator::spaceRequiredBeforeParens(const FormatToken &Right) const {
bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
const FormatToken &Left,
const FormatToken &Right) {
if (Left.is(tok::kw_return) && Right.isNot(tok::semi))
if (Left.is(tok::kw_return) &&
!Right.isOneOf(tok::semi, tok::r_paren, tok::hashhash))
return true;
if (Style.isJson() && Left.is(tok::string_literal) && Right.is(tok::colon))
return false;
@ -3026,7 +3027,7 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
return false;
// co_await (x), co_yield (x), co_return (x)
if (Left.isOneOf(tok::kw_co_await, tok::kw_co_yield, tok::kw_co_return) &&
Right.isNot(tok::semi))
!Right.isOneOf(tok::semi, tok::r_paren))
return true;
if (Left.is(tok::l_paren) || Right.is(tok::r_paren))

View File

@ -1861,6 +1861,16 @@ TEST_F(FormatTest, UnderstandsMacros) {
"#define BBB }\n",
Style);
// verifyFormat("#define AAA N { //\n", Style);
verifyFormat("MACRO(return)");
verifyFormat("MACRO(co_await)");
verifyFormat("MACRO(co_return)");
verifyFormat("MACRO(co_yield)");
verifyFormat("MACRO(return, something)");
verifyFormat("MACRO(co_return, something)");
verifyFormat("MACRO(something##something)");
verifyFormat("MACRO(return##something)");
verifyFormat("MACRO(co_return##something)");
}
TEST_F(FormatTest, ShortBlocksInMacrosDontMergeWithCodeAfterMacro) {