=?utf-8?b?5YWo5Y2T?= <[email protected]>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/[email protected]>


HighCommander4 wrote:

> The issue appears to be that the test annotation parser stops at the `]` in 
> `]:>`, which truncates the expected range marker.

It looks like the problem is not with the expected range marker (this is 
`Test.range()`, which is `0:17-0:60`, which looks correct), but with the actual 
range of the `AttributedTypeLoc` node, which is `0:17-0:57`.

It looks like the AST is reporting that the `AttributedTypeLoc` node ends at 
the `lifetimebound` token, rather than the `:>` token. This is a bug in the AST 
modeling of `AttributedTypeLoc` (or perhaps, based on [this 
comment](https://searchfox.org/llvm/rev/c8187f6539166a1d520c7f6c4f6e8857ae56a905/clang/lib/AST/TypeLoc.cpp#581-589),
 a deliberate quirk).

We can revise the test to expect the node to end there, i.e.:

```
struct X { const [[int* Foo() const <:[clang::life^timebound]]]:>
```

though I find it more readable to use the digraph for both brackets:

```
struct X { const [[int* Foo() const <:<:clang::life^timebound]]:>:>
```

and maybe add a comment saying that this is a quirk in the AST modeling of 
`AttributedTypeLoc`.

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

Reply via email to