Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -1960,6 +1960,7 @@ if (PrevToken->isOneOf(tok::l_paren, tok::l_square, tok::l_brace, tok::comma, tok::semi, tok::kw_return, tok::colon, + tok::kw_co_return, tok::kw_co_await, tok::kw_co_yield, tok::equal, tok::kw_delete, tok::kw_sizeof, tok::kw_throw) || PrevToken->isOneOf(TT_BinaryOperator, TT_ConditionalExpr, Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -7755,6 +7755,15 @@ verifyFormat("co_yield -1;"); verifyFormat("co_return -1;"); + + // The default setting for PointerAlignment is PAS_Right. + // But if we set PointerAlignment as PAS_Left, the formatter + // would mis-format the pointer alignment. + FormatStyle PASLeftStyle = getLLVMStyle(); + PASLeftStyle.PointerAlignment = FormatStyle::PAS_Left; + verifyFormat("co_return *a;", PASLeftStyle); + verifyFormat("co_await *a;", PASLeftStyle); + verifyFormat("co_yield *a", PASLeftStyle); } TEST_F(FormatTest, DoesNotIndentRelativeToUnaryOperators) {