diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/modernize-use-noexcept-macro.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/modernize-use-noexcept-macro.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/modernize-use-noexcept-macro.cpp b/clang-tools-extra/test/clang-tidy/modernize-use-noexcept-macro.cpp new file mode 100644 index 00000000000..78fcb76fdb1 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/modernize-use-noexcept-macro.cpp @@ -0,0 +1,36 @@ +// RUN: %check_clang_tidy %s modernize-use-noexcept %t -- \ +// RUN: -config="{CheckOptions: [{key: modernize-use-noexcept.ReplacementString, value: 'NOEXCEPT'}]}" \ +// RUN: -- -std=c++11 + +// Example definition of NOEXCEPT -- simplified test to see if noexcept is supported. +#if (__has_feature(cxx_noexcept)) +#define NOEXCEPT noexcept +#else +#define NOEXCEPT throw() +#endif + +void bar() throw() {} +// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'NOEXCEPT' instead [modernize-use-noexcept] +// CHECK-FIXES: void bar() NOEXCEPT {} + +// Should not trigger a FixItHint, since macros only support noexcept, and this +// case throws. +class A {}; +class B {}; +void foobar() throw(A, B); +// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: dynamic exception specification 'throw(A, B)' is deprecated; consider removing it instead [modernize-use-noexcept] + +// Should not trigger a replacement. +void foo() noexcept(true); + +struct Z { + void operator delete(void *ptr) throw(); + void operator delete[](void *ptr) throw(int); + ~Z() throw(int) {} +}; +// CHECK-MESSAGES: :[[@LINE-4]]:35: warning: dynamic exception specification 'throw()' is deprecated; consider using 'NOEXCEPT' instead [modernize-use-noexcept] +// CHECK-MESSAGES: :[[@LINE-4]]:37: warning: dynamic exception specification 'throw(int)' is deprecated; consider removing it instead [modernize-use-noexcept] +// CHECK-MESSAGES: :[[@LINE-4]]:8: warning: dynamic exception specification 'throw(int)' is deprecated; consider removing it instead [modernize-use-noexcept] +// CHECK-FIXES: void operator delete(void *ptr) NOEXCEPT; +// CHECK-FIXES: void operator delete[](void *ptr) throw(int); +// CHECK-FIXES: ~Z() throw(int) {} |