// RUN: %check_clang_tidy -std=c++17-or-later %s modernize-use-uncaught-exceptions %t #define MACRO std::uncaught_exception // CHECK-FIXES: #define MACRO std::uncaught_exception bool uncaught_exception() { return 0; } namespace std { bool uncaught_exception() { return false; } int uncaught_exceptions() { return 0; } } template bool doSomething(T t) { return t(); // CHECK-FIXES: return t(); } template bool doSomething2() { return T(); // CHECK-MESSAGES: [[@LINE-1]]:10: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: return T(); } void no_warn() { uncaught_exception(); // CHECK-FIXES: uncaught_exception(); doSomething(uncaught_exception); // CHECK-FIXES: doSomething(uncaught_exception); } void warn() { std::uncaught_exception(); // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: std::uncaught_exceptions(); using std::uncaught_exception; // CHECK-MESSAGES: [[@LINE-1]]:14: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: using std::uncaught_exceptions; uncaught_exception(); // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: uncaught_exceptions(); bool b{uncaught_exception()}; // CHECK-MESSAGES: [[@LINE-1]]:10: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: bool b{std::uncaught_exceptions() > 0}; MACRO(); // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: MACRO(); doSomething(std::uncaught_exception); // CHECK-MESSAGES: [[@LINE-1]]:15: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: doSomething(std::uncaught_exception); doSomething(uncaught_exception); // CHECK-MESSAGES: [[@LINE-1]]:15: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: doSomething(uncaught_exception); bool (*foo)(); foo = &uncaught_exception; // CHECK-MESSAGES: [[@LINE-1]]:10: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: foo = &uncaught_exception; doSomething2(); // CHECK-MESSAGES: [[@LINE-1]]:16: warning: 'std::uncaught_exception' is deprecated, use 'std::uncaught_exceptions' instead // CHECK-FIXES: doSomething2(); }