diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 0d19fb5ae..5672d1ce5 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -7889,7 +7889,8 @@ namespace PascalABCCompiler.NETGenerator private void AssignToStaticField(IExpressionNode to, IExpressionNode from) { IStaticCommonClassFieldReferenceNode value = (IStaticCommonClassFieldReferenceNode)to; - FieldInfo fi = helper.GetField(value.static_field).fi; + FldInfo fi_info = helper.GetField(value.static_field); + FieldInfo fi = fi_info.fi; TypeInfo ti = helper.GetTypeReference(to.type); if (to.type.is_value_type) { @@ -7920,7 +7921,7 @@ namespace PascalABCCompiler.NETGenerator if (ti != null) EmitBox(from, ti.tp); else - EmitBox(from, fi.FieldType); + EmitBox(from, fi_info.field_type); CheckArrayAssign(to, from, il); il.Emit(OpCodes.Stsfld, fi); } diff --git a/TestSuite/lambdas_static_fields.pas b/TestSuite/lambdas_static_fields.pas new file mode 100644 index 000000000..dc96631d2 --- /dev/null +++ b/TestSuite/lambdas_static_fields.pas @@ -0,0 +1,19 @@ +type + t1=class + + static p0: Action; + + static procedure p1(p: Action); + begin + t1&.p0 := o1->p(o1); + end; + + end; + +var i: integer; + +begin + t1&.p1(x->begin i := x; end); + t1&.p0(1); + assert(i = 1); +end. \ No newline at end of file