Lane0218 wrote:

> Looks like all we need is this:
> 
> ```diff
> diff --git a/clang/lib/Format/UnwrappedLineParser.cpp 
> b/clang/lib/Format/UnwrappedLineParser.cpp
> index c1a9161b1072..775fb9b7b3ed 100644
> --- a/clang/lib/Format/UnwrappedLineParser.cpp
> +++ b/clang/lib/Format/UnwrappedLineParser.cpp
> @@ -2664,6 +2664,9 @@ bool UnwrappedLineParser::parseParens(TokenType 
> AmpAmpTokenType,
>            RParen->setFinalizedType(TT_TypeDeclarationParen);
>          } else if (Prev->is(tok::greater) && RParen->Previous == LParen) {
>            Prev->setFinalizedType(TT_TemplateCloser);
> +        } else if (FormatTok->is(tok::l_brace) && Prev->is(tok::amp) &&
> +                   !Prev->Previous) {
> +          FormatTok->setBlockKind(BK_BracedInit);
>          } else if (OptionalParens()) {
>            LParen->Optional = true;
>            RParen->Optional = true;
> diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp 
> b/clang/unittests/Format/TokenAnnotatorTest.cpp
> index 69c2c2f17b37..a04c6bea4d05 100644
> --- a/clang/unittests/Format/TokenAnnotatorTest.cpp
> +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
> @@ -3943,6 +3943,10 @@ TEST_F(TokenAnnotatorTest, BraceKind) {
>    // Not TT_FunctionDeclarationName.
>    EXPECT_TOKEN(Tokens[6], tok::kw_operator, TT_Unknown);
>    EXPECT_BRACE_KIND(Tokens[9], BK_BracedInit);
> +
> +  Tokens = annotate("&(type){v}");
> +  ASSERT_EQ(Tokens.size(), 8u) << Tokens;
> +  EXPECT_BRACE_KIND(Tokens[4], BK_BracedInit);
>  }
>  
>  TEST_F(TokenAnnotatorTest, UnderstandsElaboratedTypeSpecifier) {
> ```

Hi @owenca, thanks for the concrete suggestion.

I updated the implementation to match your proposed approach by setting the `{` 
following `&(type)` to `BK_BracedInit` in 
`UnwrappedLineParser::parseParens(...)`, and I added the `TokenAnnotatorTest` 
coverage for `&(type){v}` (asserting the `{` is `BK_BracedInit`). I also 
cleaned up the macro regression test to use `verifyFormat` and removed the 
`getAddr2` case since its expansion is not a meaningful C/C++ snippet.

Tests: FormatTests



https://github.com/llvm/llvm-project/pull/173771
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to