Commit 645ce23 1 parent 0994a5a commit 645ce23 Copy full SHA for 645ce23
File tree 2 files changed +24
-2
lines changed
libcxx/test/std/experimental/reflection
2 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -4694,6 +4694,12 @@ void CXXNameMangler::mangleReflection(const ReflectionValue &R) {
4694
4694
Decl *D = R.getAsDecl ();
4695
4695
if (auto * ED = dyn_cast<EnumConstantDecl>(D)) {
4696
4696
mangleIntegerLiteral (ED->getType (), ED->getInitVal ());
4697
+ } else if (auto *CD = dyn_cast<CXXConstructorDecl>(D)) {
4698
+ GlobalDecl GD (CD, Ctor_Complete);
4699
+ mangle (GD);
4700
+ } else if (auto *DD = dyn_cast<CXXDestructorDecl>(D)) {
4701
+ GlobalDecl GD (DD, Dtor_Complete);
4702
+ mangle (GD);
4697
4703
} else {
4698
4704
mangle (cast<NamedDecl>(D));
4699
4705
}
Original file line number Diff line number Diff line change @@ -194,8 +194,24 @@ template<class T> struct TCls {};
194
194
TCls<int > obj1;
195
195
TCls<decltype(obj1)> obj2;
196
196
197
- static_assert (has_template_arguments(template_arguments_of(^decltype(obj2))[0 ]) ==
198
- has_template_arguments (^TCls<int >));
197
+ static_assert (
198
+ has_template_arguments (template_arguments_of(^decltype(obj2))[0]) ==
199
+ has_template_arguments(^TCls<int >));
199
200
} // namespace bb_clang_p2996_issue_41_regression_test
200
201
202
+ // =======================================
203
+ // bb_clang_p2996_issue_54_regression_test
204
+ // =======================================
205
+
206
+ namespace bb_clang_p2996_issue_54_regression_test {
207
+ template <auto R> void fn () { }
208
+
209
+ void fn () {
210
+ class S { S(); ~S (); };
211
+ fn<members_of (^S, std::meta::is_constructor)[0 ]>();
212
+ fn<members_of (^S, std::meta::is_destructor)[0 ]>();
213
+ }
214
+ } // namespace bb_clang_p2996_issue_54_regression_test
215
+
216
+
201
217
int main () { }
You can’t perform that action at this time.
0 commit comments