-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Open
Open
Copy link
Labels
Milestone
Description
The following test passes but it should produce an error on obj.M1<int>():
[Fact]
public void LoadingUnmanagedTypeModifier_ModreqGeneric()
{
var ilSource = IsUnmanagedAttributeIL + @"
.class public auto ansi beforefieldinit TestRef
extends [mscorlib]System.Object
{
.method public hidebysig instance void
M1<valuetype .ctor (class [mscorlib]System.ValueType modreq(System.Runtime.InteropServices.UnmanagedType`1)) T>() cil managed
{
.param type T
.custom instance void System.Runtime.CompilerServices.IsUnmanagedAttribute::.ctor() = ( 01 00 00 00 )
// Code size 2 (0x2)
.maxstack 8
IL_0000: nop
IL_0001: ret
} // end of method TestRef::M1
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method TestRef::.ctor
}
.class public auto ansi beforefieldinit System.Runtime.InteropServices.UnmanagedType`1<T>
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
}
}
";
var reference = CompileIL(ilSource, prependDefaultHeader: false);
var code = @"
public class Test
{
public static void Main()
{
var obj = new TestRef();
obj.M1<int>();
}
}";
CreateCompilation(code, references: new[] { reference }).VerifyDiagnostics(
);
}
Other similar helpers should be checked for the same problem.
Reactions are currently unavailable