This commit is contained in:
parent
5a20ef15dc
commit
88d0255e62
|
|
@ -5576,7 +5576,8 @@ namespace PascalABCCompiler.NETGenerator
|
|||
{
|
||||
if (fi_info.field_type.IsValueType || fi_info.field_type.IsGenericParameter)
|
||||
{
|
||||
if (is_field_reference && value.type.is_generic_parameter && value.type.base_type != null && value.type.base_type.is_class && value.type.base_type.base_type != null)
|
||||
if (is_field_reference && (value.type.is_generic_parameter && value.type.base_type != null && value.type.base_type.is_class && value.type.base_type.base_type != null
|
||||
|| value.conversion_type != null && value.conversion_type.is_generic_parameter && value.conversion_type.base_type != null && value.conversion_type.base_type.is_class && value.conversion_type.base_type.base_type != null))
|
||||
il.Emit(OpCodes.Ldfld, fi);
|
||||
else
|
||||
il.Emit(OpCodes.Ldflda, fi);
|
||||
|
|
|
|||
15
TestSuite/generics48.pas
Normal file
15
TestSuite/generics48.pas
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
type
|
||||
t0 = class
|
||||
v := 123;
|
||||
end;
|
||||
|
||||
procedure p1<T>(o: T);
|
||||
where T: t0, constructor;
|
||||
begin
|
||||
assert(t0(o).v = 123);
|
||||
var p := procedure -> o := o;
|
||||
end;
|
||||
|
||||
begin
|
||||
p1(new t0);
|
||||
end.
|
||||
Loading…
Reference in a new issue