erichkeane wrote:
> Moving the checks does work for these limited cases, but now that we don't
> have them there, one of the old tests now doesn't show up the diagnosis:
>
> ```c++
> void f() {
> throw;
> }
>
> void g() {
> try {
> f();
> } catch (...) {
> }
> }
> ```
>
> Since there is a separate call:
>
> ```c++
> return Actions.ActOnCXXTryBlock(TryLoc, TryBlock.get(), Handlers);
> ```
>
> and debugging under lldb, breakpoints don't reach (i.e exit early) the
> transform calls.
Right, 'transform' only happens during template instantiation. So we need to
find 'some place' (that is a seperate function) to do these diagnostics. I
might suggest doing a new one, since there doesn't seem to be a sensible place
to do so otherwise... perhaps something like:
```
void Sema::DiagnoseExceptionUse(bool isTry) {
// do the checking + diagnostic here, but have it check the decl-context for
dependence
}
```
NOTE I had that return `void` instead of `bool`. (And is `Diagnose` instead of
`Check`). I wonder if there is value to continuing (@AaronBallman??) and
putting these in the AST anyway? The continued checking is perhaps valuable,
and tooling might appreciate it in the AST anyway.
https://github.com/llvm/llvm-project/pull/139859
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits