Fix is_public and is_class_member for scoped/unscoped enum (#194)
* Add bubble up for unscoped enum in membership check Check membership for public check access Signed-off-by: zebullax <zebullax@gmail.com> * Fix golden copy for generated headers Signed-off-by: zebullax <zebullax@gmail.com> * Skip validation of reflection unittest that introduce non ascii character Signed-off-by: zebullax <zebullax@gmail.com> * Check class membership for is_private/protected/public Signed-off-by: zebullax <zebullax@gmail.com> --------- Signed-off-by: zebullax <zebullax@gmail.com>
This commit is contained in:
@@ -82,6 +82,7 @@ module;
|
||||
#include <mdspan>
|
||||
#include <memory>
|
||||
#include <memory_resource>
|
||||
#include <meta>
|
||||
#include <mutex>
|
||||
#include <new>
|
||||
#include <numbers>
|
||||
|
||||
@@ -392,4 +392,33 @@ struct D : A, protected B, private C {
|
||||
|
||||
} // namespace bb_clang_p2996_issue_148_regression_test
|
||||
|
||||
// ========================================
|
||||
// bb_clang_p2996_issue_193_regression_test
|
||||
// ========================================
|
||||
|
||||
namespace bb_clang_p2996_issue_193_regression_test {
|
||||
struct S {
|
||||
enum E {
|
||||
A
|
||||
};
|
||||
|
||||
enum class SE {
|
||||
B
|
||||
};
|
||||
};
|
||||
|
||||
static_assert(std::meta::is_class_member(^^S::E));
|
||||
static_assert(std::meta::is_class_member(^^S::SE));
|
||||
|
||||
static_assert(std::meta::is_public(^^S::E));
|
||||
static_assert(std::meta::is_public(^^S::SE));
|
||||
|
||||
static_assert(std::meta::is_class_member(^^S::E::A));
|
||||
static_assert(!std::meta::is_class_member(^^S::SE::B));
|
||||
|
||||
static_assert(std::meta::is_public(^^S::E::A));
|
||||
static_assert(!std::meta::is_public(^^S::SE::B));
|
||||
|
||||
} // namespace bb_clang_p2996_issue_193_regression_test
|
||||
|
||||
int main() { }
|
||||
|
||||
@@ -282,6 +282,8 @@ check-generated-output)
|
||||
--exclude 'ostream.pass.cpp' \
|
||||
--exclude 'transcoding.pass.cpp' \
|
||||
--exclude 'underflow.pass.cpp' \
|
||||
--exclude 'define-aggregate.pass.cpp' \
|
||||
--exclude 'names.pass.cpp' \
|
||||
|| false
|
||||
;;
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user