From e799fd0d7429955087faea3ef5f41ff94fffcf7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Tue, 4 Feb 2020 21:00:07 +0100 Subject: [PATCH] bug fix #2200 --- NETGenerator/NETGenerator.cs | 4 ++-- TestSuite/generics32.pas | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 TestSuite/generics32.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 54d362ff4..11642a3c8 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -7121,7 +7121,7 @@ namespace PascalABCCompiler.NETGenerator if (!tmp_dot) is_dot_expr = true; value.obj.visit(this); - if ((value.obj.type.is_value_type) && !value.method.common_comprehensive_type.is_value_type) + if ((value.obj.type.is_value_type) && !value.method.comperehensive_type.is_value_type) { il.Emit(OpCodes.Box, helper.GetTypeReference(value.obj.type).tp); } @@ -7131,7 +7131,7 @@ namespace PascalABCCompiler.NETGenerator il.Emit(OpCodes.Stloc, lb); il.Emit(OpCodes.Ldloca, lb); } - else if (value.obj.conversion_type != null && value.obj.conversion_type.is_value_type && !value.method.common_comprehensive_type.is_value_type) + else if (value.obj.conversion_type != null && value.obj.conversion_type.is_value_type && !value.method.comperehensive_type.is_value_type) { il.Emit(OpCodes.Box, helper.GetTypeReference(value.obj.conversion_type).tp); } diff --git a/TestSuite/generics32.pas b/TestSuite/generics32.pas new file mode 100644 index 000000000..8f42643a1 --- /dev/null +++ b/TestSuite/generics32.pas @@ -0,0 +1,16 @@ +var i: integer; +type + r1 = record + + procedure p1; + begin + i := 1; + end; + + end; + +begin + var r: r1; + r.p1&; + assert(i = 1); +end. \ No newline at end of file