[PATCH] D119230: [clang] Add test for C++ DR2390

Timm B├Ąder via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 8 04:07:15 PST 2022

tbaeder created this revision.
tbaeder added a reviewer: aaron.ballman.
tbaeder requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

DR2390 clarifies that the argument to `__has_cpp_attribute()` needs to be
macro-expanded. Clang already supports this and tests it explicitly in

Copy the test over to `clang/test/CXX/drs/` so the `make_cxx_drs` script
picks it up.

  rG LLVM Github Monorepo



Index: clang/test/CXX/drs/dr2390.cpp
--- /dev/null
+++ clang/test/CXX/drs/dr2390.cpp
@@ -0,0 +1,47 @@
+// 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;
+// CHECK: int has_fallthrough;
+#if __has_cpp_attribute(C::F)
+int has_clang_fallthrough_1;
+// CHECK: int has_clang_fallthrough_1;
+#if __has_cpp_attribute(clang::F)
+int has_clang_fallthrough_2;
+// CHECK: int has_clang_fallthrough_2;
+#if __has_cpp_attribute(C::fallthrough)
+int has_clang_fallthrough_3;
+// CHECK: int has_clang_fallthrough_3;
+#if __has_cpp_attribute(CF)
+int has_clang_fallthrough_4;
+// CHECK: int has_clang_fallthrough_4;
+#define FUNCLIKE1(x) clang::x
+#if __has_cpp_attribute(FUNCLIKE1(fallthrough))
+int funclike_1;
+// CHECK: int funclike_1;
+#define FUNCLIKE2(x) _Clang::x
+#if __has_cpp_attribute(FUNCLIKE2(fallthrough))
+int funclike_2;
+// CHECK: int funclike_2;
+} // namespace PR48462

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119230.406762.patch
Type: text/x-patch
Size: 1233 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220208/52a9dac1/attachment.bin>

More information about the cfe-commits mailing list