xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/macro-usage-custom.cpp (revision e8a3ddafe063c970df9c23e803812369abde4c82)
189a1d03eSRichard // RUN: %check_clang_tidy %s cppcoreguidelines-macro-usage %t \
289a1d03eSRichard // RUN: -config="{CheckOptions: \
3*e8a3ddafSNathan James // RUN:  {cppcoreguidelines-macro-usage.AllowedRegexp: 'DEBUG_*|TEST_*'}}" --
489a1d03eSRichard 
589a1d03eSRichard #ifndef INCLUDE_GUARD
689a1d03eSRichard #define INCLUDE_GUARD
789a1d03eSRichard 
889a1d03eSRichard #define PROBLEMATIC_CONSTANT 0
989a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:9: warning: macro 'PROBLEMATIC_CONSTANT' used to declare a constant; consider using a 'constexpr' constant
1089a1d03eSRichard 
1189a1d03eSRichard #define PROBLEMATIC_FUNCTION(x, y) ((a) > (b) ? (a) : (b))
1289a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:9: warning: function-like macro 'PROBLEMATIC_FUNCTION' used; consider a 'constexpr' template function
1389a1d03eSRichard 
1489a1d03eSRichard #define PROBLEMATIC_VARIADIC(...) (__VA_ARGS__)
1589a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:9: warning: variadic macro 'PROBLEMATIC_VARIADIC' used; consider using a 'constexpr' variadic template function
1689a1d03eSRichard 
1789a1d03eSRichard #define PROBLEMATIC_VARIADIC2(x, ...) (__VA_ARGS__)
1889a1d03eSRichard // CHECK-MESSAGES: [[@LINE-1]]:9: warning: variadic macro 'PROBLEMATIC_VARIADIC2' used; consider using a 'constexpr' variadic template function
1989a1d03eSRichard 
2089a1d03eSRichard #define DEBUG_CONSTANT 0
2189a1d03eSRichard #define DEBUG_FUNCTION(x, y) ((a) > (b) ? (a) : (b))
2289a1d03eSRichard #define DEBUG_VARIADIC(...) (__VA_ARGS__)
2389a1d03eSRichard #define TEST_CONSTANT 0
2489a1d03eSRichard #define TEST_FUNCTION(x, y) ((a) > (b) ? (a) : (b))
2589a1d03eSRichard #define TEST_VARIADIC(...) (__VA_ARGS__)
2689a1d03eSRichard #define TEST_VARIADIC2(x, ...) (__VA_ARGS__)
2789a1d03eSRichard 
2889a1d03eSRichard #endif
29