From 752d17c296bda557bcc34e72e06ed3493154aed1 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: Sun, 10 Jun 2018 19:04:11 +0200 Subject: [PATCH] fix #901 --- NETGenerator/NETGenerator.cs | 2 +- TestSuite/records8.pas | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 TestSuite/records8.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 284ee34f2..9c6a7f1c8 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -6919,7 +6919,7 @@ namespace PascalABCCompiler.NETGenerator { il.Emit(OpCodes.Box, helper.GetTypeReference(value.obj.conversion_type).tp); } - else if (value.obj.type.is_value_type && !(value.obj is IAddressedExpressionNode) && !(value.obj is IThisNode)) + else if (value.obj.type.is_value_type && !(value.obj is IAddressedExpressionNode) && !(value.obj is IThisNode) && !(value.obj is ICommonMethodCallNode)) { LocalBuilder lb = il.DeclareLocal(helper.GetTypeReference(value.obj.type).tp); il.Emit(OpCodes.Stloc, lb); diff --git a/TestSuite/records8.pas b/TestSuite/records8.pas new file mode 100644 index 000000000..8b0e47df6 --- /dev/null +++ b/TestSuite/records8.pas @@ -0,0 +1,25 @@ +type + + t1=record + public x,y:integer; + function p1 := (x, y); + end; + + t2=class + _p1:t1; + property p1:t1 read _p1; + function GetP1 := _p1;//не обязательно короткая функция + end; + +begin + + var a:=new t2; + a._p1 := new t1; + a._p1.x := 3; + a._p1.y := 5; + + var t := a.p1.p1; + assert(t.Item1 = 3); + assert(t.Item2 = 5); + +end. \ No newline at end of file