[PATCH] D153298: [clang-tidy] Extend bugprone-exception-escape diagnostics
Domján Dániel via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 19 11:13:43 PDT 2023
isuckatcs added inline comments.
================
Comment at: clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp:542
+ CaughtExceptions)) {
+ CaughtExceptions.emplace(CaughtType, SourceLocation());
ExceptionInfo Rethrown = throwsException(Catch->getHandlerBlock(),
----------------
isuckatcs wrote:
> Here we rethrow something from a `try` block if I understand it correctly.
>
> ```lang=c++
> void foo() {
> throw 3;
> }
>
> void bar() {
> try {
> foo();
> } catch(short) {
> }
> }
> ```
>
> The best way would be to set the `SourceLocation` to the point, where `foo()` is called.
> I think you would need to create a new `struct` called `ThrowableInfo`, which contains,
> every information that we need to know about the `Throwable` e.g.: type, location, parent
> context, etc. That would also be more extensible.
>
> If there's no way to deduce this location for some reason, you can still set the location
> to the `try` block and create messages like `rethrown from try here`, etc. Just don't create
> invalid `SourceLocation`s please, because besides them being incorrect, they are also
> a source of bugs and crashes.
Also, is this branch tested? I don't see any new test case with a `try` block.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153298/new/
https://reviews.llvm.org/D153298
More information about the cfe-commits
mailing list