From 903e6ed63c6b29bb32327effb4da2d2e876f2901 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 21 Feb 2021 12:33:51 +0100 Subject: [PATCH] #2436 --- TestSuite/nil7.pas | 18 ++++++++++++++++++ .../convertion_data_and_alghoritms.cs | 8 ++++---- 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 TestSuite/nil7.pas diff --git a/TestSuite/nil7.pas b/TestSuite/nil7.pas new file mode 100644 index 000000000..12ad02740 --- /dev/null +++ b/TestSuite/nil7.pas @@ -0,0 +1,18 @@ +type + t0 = class end; + + t1 = class + static function operator implicit(p: t0): t1 := new t1; + end; + +var obj: t1; + +procedure p1(o: t1); +begin + obj := o; +end; + +begin + p1(t0(nil)); + assert(obj <> nil); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs index d21971438..36d0e34b8 100644 --- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs +++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs @@ -1727,10 +1727,10 @@ namespace PascalABCCompiler.TreeConverter exprs[i].type = fn.parameters[fn.parameters.Count - 1].type; break; } - if ((ptcal[i]==null)||(ptcal[i].first==null)||exprs[i] is null_const_node) - { - continue; - } + if ((ptcal[i] == null) || (ptcal[i].first == null) || (exprs[i] is null_const_node && exprs[i].type is null_type_node)) + { + continue; + } expression_node[] temp_arr = new expression_node[1]; temp_arr[0] = exprs[i]; if (ptcal[i].first.convertion_method is compiled_constructor_node)