@@ -2112,6 +2112,48 @@ TEST(FunctionReflectionTest, GetFunctionCallWrapper) {
2112
2112
2113
2113
auto op_callable = Cpp::MakeFunctionCallable (op);
2114
2114
EXPECT_EQ (op_callable.getKind (), Cpp::JitCall::kGenericCall );
2115
+
2116
+ Cpp::Declare (R"(
2117
+ enum class MyEnum { A, B, C };
2118
+ template <MyEnum E>
2119
+ class TemplatedEnum {};
2120
+
2121
+ namespace MyNameSpace {
2122
+ enum class MyEnum { A, B, C };
2123
+ template <MyEnum E>
2124
+ class TemplatedEnum {};
2125
+ }
2126
+ )" );
2127
+
2128
+ Cpp::TCppScope_t TemplatedEnum = Cpp::GetScope (" TemplatedEnum" );
2129
+ EXPECT_TRUE (TemplatedEnum);
2130
+
2131
+ auto TAI_enum =
2132
+ Cpp::TemplateArgInfo (Cpp::GetTypeFromScope (Cpp::GetNamed (" MyEnum" )), " 1" );
2133
+ Cpp::TCppScope_t TemplatedEnum_instantiated =
2134
+ Cpp::InstantiateTemplate (TemplatedEnum, &TAI_enum, 1 );
2135
+ EXPECT_TRUE (TemplatedEnum_instantiated);
2136
+
2137
+ Cpp::TCppObject_t obj = Cpp::Construct (TemplatedEnum_instantiated);
2138
+ EXPECT_TRUE (obj);
2139
+ Cpp::Destruct (obj, TemplatedEnum_instantiated);
2140
+ obj = nullptr ;
2141
+
2142
+ Cpp::TCppScope_t MyNameSpace_TemplatedEnum =
2143
+ Cpp::GetScope (" TemplatedEnum" , Cpp::GetScope (" MyNameSpace" ));
2144
+ EXPECT_TRUE (TemplatedEnum);
2145
+
2146
+ TAI_enum = Cpp::TemplateArgInfo (Cpp::GetTypeFromScope (Cpp::GetNamed (
2147
+ " MyEnum" , Cpp::GetScope (" MyNameSpace" ))),
2148
+ " 1" );
2149
+ Cpp::TCppScope_t MyNameSpace_TemplatedEnum_instantiated =
2150
+ Cpp::InstantiateTemplate (MyNameSpace_TemplatedEnum, &TAI_enum, 1 );
2151
+ EXPECT_TRUE (TemplatedEnum_instantiated);
2152
+
2153
+ obj = Cpp::Construct (MyNameSpace_TemplatedEnum_instantiated);
2154
+ EXPECT_TRUE (obj);
2155
+ Cpp::Destruct (obj, MyNameSpace_TemplatedEnum_instantiated);
2156
+ obj = nullptr ;
2115
2157
}
2116
2158
2117
2159
TEST (FunctionReflectionTest, IsConstMethod) {
0 commit comments