diff options
author | Gabor Horvath <xazax.hun@gmail.com> | 2017-02-17 08:52:51 +0000 |
---|---|---|
committer | Gabor Horvath <xazax.hun@gmail.com> | 2017-02-17 08:52:51 +0000 |
commit | e2fa53030e1457060e5b88d4168be9c5b121054c (patch) | |
tree | afe0e4ab990a5a8dbf4815147ae8e9629caee85a /clang-tools-extra/test | |
parent | 3c35491f02f79e71688ca4d2ca63c243e3e5b18c (diff) | |
download | bcm5719-llvm-e2fa53030e1457060e5b88d4168be9c5b121054c.tar.gz bcm5719-llvm-e2fa53030e1457060e5b88d4168be9c5b121054c.zip |
[clang-tidy] Add cert-dcl58-cpp (do not modify the 'std' namespace) check.
Differential Revision: https://reviews.llvm.org/D23421
llvm-svn: 295435
Diffstat (limited to 'clang-tools-extra/test')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/Inputs/Headers/system-header-simulation.h | 24 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/cert-dcl58-cpp.cpp | 67 |
2 files changed, 91 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/Inputs/Headers/system-header-simulation.h b/clang-tools-extra/test/clang-tidy/Inputs/Headers/system-header-simulation.h new file mode 100644 index 00000000000..0df5305e5af --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/Inputs/Headers/system-header-simulation.h @@ -0,0 +1,24 @@ +#pragma clang system_header + +namespace std { + +template<class T, T v> +struct integral_constant { + static constexpr T value = v; + typedef T value_type; + typedef integral_constant type; + constexpr operator value_type() const noexcept { return value; } +}; + +template <bool B> +using bool_constant = integral_constant<bool, B>; +using true_type = bool_constant<true>; +using false_type = bool_constant<false>; + +template<class T> +struct is_error_code_enum : false_type {}; + +template<class T> +void swap(T &a, T &b); +} + diff --git a/clang-tools-extra/test/clang-tidy/cert-dcl58-cpp.cpp b/clang-tools-extra/test/clang-tidy/cert-dcl58-cpp.cpp new file mode 100644 index 00000000000..34ee368dffe --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/cert-dcl58-cpp.cpp @@ -0,0 +1,67 @@ +// RUN: %check_clang_tidy %s cert-dcl58-cpp %t -- -- -std=c++1z -I %S/Inputs/Headers + +#include "system-header-simulation.h" + +namespace A { + namespace B { + int b; + } +} + +namespace A { + namespace B { + int c; + } +} + +namespace posix { +// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: modification of 'posix' namespace can result in undefined behavior [cert-dcl58-cpp] + namespace vmi { + } +} + +namespace std { +// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: modification of 'std' namespace can + int stdInt; +} + +namespace foobar { + namespace std { + int bar; + } +} + +namespace posix::a { +// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: modification of 'posix' namespace +} + +enum class MyError { + ErrorA, + ErrorB +}; + +namespace std { +template <> +struct is_error_code_enum<MyError> : std::true_type {}; + +template<> +void swap<MyError>(MyError &a, MyError &b); +} + +enum class MyError2 { + Error2A, + Error2B +}; + +namespace std { +// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: modification of 'std' namespace +template <> +struct is_error_code_enum<MyError2> : std::true_type {}; + +int foobar; +} + +using namespace std; + +int x; + |