xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/bugprone/exception-escape-rethrow.cpp (revision daac014fec427eda305f93da7891c0122a161bb3)
1 // RUN: %check_clang_tidy -std=c++11,c++14,c++17,c++20 %s bugprone-exception-escape %t -- \
2 // RUN:     -- -fexceptions
3 
rethrower()4 void rethrower() {
5     throw;
6 }
7 
callsRethrower()8 void callsRethrower() {
9     rethrower();
10 }
11 
callsRethrowerNoexcept()12 void callsRethrowerNoexcept() noexcept {
13     rethrower();
14 }
15 
throwsAndCallsRethrower()16 int throwsAndCallsRethrower() noexcept {
17 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: an exception may be thrown in function 'throwsAndCallsRethrower' which should not throw exceptions
18     try {
19         throw 1;
20     } catch(...) {
21         rethrower();
22     }
23 }
24 
throwsAndCallsCallsRethrower()25 int throwsAndCallsCallsRethrower() noexcept {
26 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: an exception may be thrown in function 'throwsAndCallsCallsRethrower' which should not throw exceptions
27     try {
28         throw 1;
29     } catch(...) {
30         callsRethrower();
31     }
32 }
33 
rethrowerNoexcept()34 void rethrowerNoexcept() noexcept {
35     throw;
36 }
37