From db48b41fd0fd0ac79490f291fa94d6941e8dbe0f Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Wed, 29 Dec 2021 12:57:50 +0100 Subject: [PATCH] #2596 --- NETGenerator/NETGenerator.cs | 2 ++ TestSuite/where19.pas | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 TestSuite/where19.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 02d85b810..224ccabe1 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -8300,7 +8300,9 @@ namespace PascalABCCompiler.NETGenerator FieldInfo fi = fi_info.fi; is_dot_expr = true; has_dereferences = false; + is_field_reference = true; value.obj.visit(this); + is_field_reference = false; bool has_dereferences_tmp = has_dereferences; has_dereferences = false; is_dot_expr = false; diff --git a/TestSuite/where19.pas b/TestSuite/where19.pas new file mode 100644 index 000000000..f3ca158c6 --- /dev/null +++ b/TestSuite/where19.pas @@ -0,0 +1,21 @@ +type + t1 = class + f := true; + end; + +procedure p(o: T); where T: t1; +begin + var oo := o; + assert(oo.f); + oo.f := false; // Записывает неправильно + assert(not oo.f); + o.f := true; + assert(oo.f); + o.f := false; + assert(not oo.f); +end; + +begin + var a := new t1; + p(a); +end. \ No newline at end of file