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