[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:
parent
6c80e38554
commit
331e8e4e27
@ -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))
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user