Skip to content

Commit b2db851

Browse files
Test to create ByRefLike instance through a generic parameter (#101004)
* Test to create ByRefLike instance through a generic parameter
1 parent 715e697 commit b2db851

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/tests/Loader/classloader/generics/ByRefLike/InvalidCSharp.il

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,26 @@
7373

7474
.field public !T Field
7575

76+
.method public hidebysig
77+
instance !T CreateDefaultInstance() cil managed
78+
{
79+
.locals init (
80+
[0] !T
81+
)
82+
ldloca.s 0
83+
initobj !T
84+
ldloc.0
85+
ret
86+
}
87+
88+
.method public hidebysig
89+
instance class [System.Runtime]System.Type GetGenericType() cil managed
90+
{
91+
ldtoken !T
92+
call class [System.Runtime]System.Type [System.Runtime]System.Type::GetTypeFromHandle(valuetype [System.Runtime]System.RuntimeTypeHandle)
93+
ret
94+
}
95+
7696
.method public hidebysig
7797
instance object BoxAsObject(!T) cil managed
7898
{
@@ -564,6 +584,24 @@
564584
ret
565585
}
566586

587+
.method public hidebysig static
588+
string CreateDefaultInstance() cil managed
589+
{
590+
.locals init (
591+
[0] valuetype InvalidCSharp.GenericByRefLike_Over`1<valuetype ByRefLikeType>
592+
)
593+
594+
ldloca.s 0
595+
initobj valuetype InvalidCSharp.GenericByRefLike_Over`1<valuetype ByRefLikeType>
596+
ldloca.s 0
597+
call instance !0 valuetype InvalidCSharp.GenericByRefLike_Over`1<valuetype ByRefLikeType>::CreateDefaultInstance()
598+
pop
599+
ldloca.s 0
600+
call instance class [System.Runtime]System.Type valuetype InvalidCSharp.GenericByRefLike_Over`1<valuetype ByRefLikeType>::GetGenericType()
601+
callvirt instance string [System.Runtime]System.Object::ToString()
602+
ret
603+
}
604+
567605
.method public hidebysig static
568606
object BoxAsObject() cil managed
569607
{

src/tests/Loader/classloader/generics/ByRefLike/Validate.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public static void Validate_TypeLoad()
2121
Console.WriteLine($" -- Instantiate: {Exec.GenericValueType()}");
2222
Console.WriteLine($" -- Instantiate: {Exec.GenericByRefLike()}");
2323
Console.WriteLine($" -- Instantiate: {Exec.GenericByRefLike_ConstraintsAreIndependent_Int32_Int32()}");
24+
Console.WriteLine($" -- Create: {Exec.CreateDefaultInstance()}");
2425

2526
Assert.Throws<TypeLoadException>(() => { Exec.GenericClass_Invalid(); });
2627
Assert.Throws<TypeLoadException>(() => { Exec.GenericInterface_Invalid(); });

0 commit comments

Comments
 (0)