| // RUN: %clang_cc1 -E -P %s -o - | FileCheck %s |
| |
| // dr2390: yes |
| |
| namespace PR48462 { |
| // Test that macro expansion of the builtin argument works. |
| #define C clang |
| #define F fallthrough |
| #define CF clang::fallthrough |
| |
| #if __has_cpp_attribute(F) |
| int has_fallthrough; |
| #endif |
| // CHECK: int has_fallthrough; |
| |
| #if __has_cpp_attribute(C::F) |
| int has_clang_fallthrough_1; |
| #endif |
| // CHECK: int has_clang_fallthrough_1; |
| |
| #if __has_cpp_attribute(clang::F) |
| int has_clang_fallthrough_2; |
| #endif |
| // CHECK: int has_clang_fallthrough_2; |
| |
| #if __has_cpp_attribute(C::fallthrough) |
| int has_clang_fallthrough_3; |
| #endif |
| // CHECK: int has_clang_fallthrough_3; |
| |
| #if __has_cpp_attribute(CF) |
| int has_clang_fallthrough_4; |
| #endif |
| // CHECK: int has_clang_fallthrough_4; |
| |
| #define FUNCLIKE1(x) clang::x |
| #if __has_cpp_attribute(FUNCLIKE1(fallthrough)) |
| int funclike_1; |
| #endif |
| // CHECK: int funclike_1; |
| |
| #define FUNCLIKE2(x) _Clang::x |
| #if __has_cpp_attribute(FUNCLIKE2(fallthrough)) |
| int funclike_2; |
| #endif |
| // CHECK: int funclike_2; |
| } // namespace PR48462 |