diff options
author | Jonas Toth <jonas.toth@gmail.com> | 2018-10-22 19:20:01 +0000 |
---|---|---|
committer | Jonas Toth <jonas.toth@gmail.com> | 2018-10-22 19:20:01 +0000 |
commit | 552b62ed1f24dfbed4b5ee733415572ead5b228e (patch) | |
tree | f389feaa5b77a8c10caef76cc0c923be21a00d6e /clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp | |
parent | c2e58e726525943ffa6eef3392de42dc0a769470 (diff) | |
download | bcm5719-llvm-552b62ed1f24dfbed4b5ee733415572ead5b228e.tar.gz bcm5719-llvm-552b62ed1f24dfbed4b5ee733415572ead5b228e.zip |
[clang-tidy] implement cppcoreguidelines macro rules
Summary:
In short macros are discouraged by multiple rules (and sometimes reference randomly). [Enum.1], [ES.30], [ES.31]
This check allows only headerguards and empty macros for annotation.
Reviewers: aaron.ballman, hokein
Reviewed By: aaron.ballman
Subscribers: jbcoe, Eugene.Zelenko, klimek, nemanjai, mgorny, xazax.hun, kbarton, cfe-commits
Differential Revision: https://reviews.llvm.org/D41648
llvm-svn: 344940
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp new file mode 100644 index 00000000000..ea92e19f7ee --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp @@ -0,0 +1,18 @@ +// RUN: %check_clang_tidy %s cppcoreguidelines-macro-usage %t + +#ifndef INCLUDE_GUARD +#define INCLUDE_GUARD + +#define PROBLEMATIC_CONSTANT 0 +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: macro used to declare a constant; consider using a 'constexpr' constant + +#define PROBLEMATIC_FUNCTION(x, y) ((a) > (b) ? (a) : (b)) +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: function-like macro used; consider a 'constexpr' template function + +#define PROBLEMATIC_VARIADIC(...) (__VA_ARGS__) +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: variadic macro used; consider using a 'constexpr' variadic template function + +#define PROBLEMATIC_VARIADIC2(x, ...) (__VA_ARGS__) +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: variadic macro used; consider using a 'constexpr' variadic template function + +#endif |