From 0923a10a689e1c70255d593c9625caeb76e93b9d Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 10 Oct 2021 10:33:40 +0200 Subject: [PATCH] #2528 --- NETGenerator/NETGenerator.cs | 2 ++ TestSuite/nullable6.pas | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 TestSuite/nullable6.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 7747e1901..aed009a1e 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -9082,12 +9082,14 @@ namespace PascalABCCompiler.NETGenerator EmitOperator(value); if (!(real_parameters[0] is IDefaultOperatorNode) && !(real_parameters[1] is IDefaultOperatorNode)) { + is_dot_expr = true; real_parameters[0].visit(this); if (real_parameters[0].type is IGenericTypeInstance) mi_left = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { })); else mi_left = ti_left.tp.GetMethod("get_HasValue", new Type[] { }); il.Emit(OpCodes.Call, mi_left); + is_dot_expr = true; real_parameters[1].visit(this); if (real_parameters[1].type is IGenericTypeInstance) mi_right = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { })); diff --git a/TestSuite/nullable6.pas b/TestSuite/nullable6.pas new file mode 100644 index 000000000..2eade34e1 --- /dev/null +++ b/TestSuite/nullable6.pas @@ -0,0 +1,16 @@ +type + t1 = class + function f1: char? := #1; + end; + + function f2: char? := #1; + +begin + var b := t1.Create.f1 = #1; + assert(b); + var c := #1; + assert(t1.Create.f1 = c); + var nc: char? := #1; + assert(t1.Create.f1 = nc); + assert(f2 = c); +end. \ No newline at end of file