diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 9c6a7f1c8..f2ed6e97e 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) && !(value.obj is ICommonMethodCallNode)) + else if (value.obj.type.is_value_type && !(value.obj is IAddressedExpressionNode) && !(value.obj is IThisNode) && !(value.obj is ICommonMethodCallNode) && !(value.obj is ICommonConstructorCall)) { LocalBuilder lb = il.DeclareLocal(helper.GetTypeReference(value.obj.type).tp); il.Emit(OpCodes.Stloc, lb); diff --git a/TestSuite/records9.pas b/TestSuite/records9.pas new file mode 100644 index 000000000..2ef6de82c --- /dev/null +++ b/TestSuite/records9.pas @@ -0,0 +1,11 @@ +type + t1=record + b:byte := 5; + function f1 := b; + constructor(b:byte) := self.b := b; + end; + +begin + var b := (new t1(5)).f1; + assert(b = 5)//должно выводить 5, но выводит мусор, там такое же преобразование как в #901 +end. \ No newline at end of file