diff --git a/TestSuite/implicitexplicit28.pas b/TestSuite/implicitexplicit28.pas new file mode 100644 index 000000000..11419a59d --- /dev/null +++ b/TestSuite/implicitexplicit28.pas @@ -0,0 +1,21 @@ +var i: integer; + +type + MyClass = record + static function operator implicit(a: array of T): MyClass; + begin + Inc(i); + end; + static function operator=(first, second: MyClass) := True; + end; + ott = (one, two, three); + stype = MyClass; + + +begin + var g: array of ott := |one,three|; + var s: MyClass := new MyClass; + var b := (g = s); + assert(i = 1); + // ppp(g,s); +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 575f0b361..f2149d289 100644 --- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs +++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs @@ -2883,6 +2883,7 @@ namespace PascalABCCompiler.TreeConverter { var tlist = new List(); tlist.Add(f2); + convert_function_call_expressions(tlist[0], parameters, tcll[0]); return tlist; } } @@ -2960,6 +2961,7 @@ namespace PascalABCCompiler.TreeConverter set_of_possible_functions.Remove(fn); var tlist = new List(); tlist.Add(set_of_possible_functions[0]); + convert_function_call_expressions(tlist[0], parameters, tcll[0]); return tlist; } } @@ -2969,12 +2971,14 @@ namespace PascalABCCompiler.TreeConverter { var tlist = new List(); tlist.Add(set_of_possible_functions[1]); + convert_function_call_expressions(tlist[0], parameters, tcll[0]); return tlist; } else if (set_of_possible_functions[1].semantic_node_type == semantic_node_type.basic_function_node && set_of_possible_functions[0].semantic_node_type != semantic_node_type.basic_function_node) { var tlist = new List(); tlist.Add(set_of_possible_functions[0]); + convert_function_call_expressions(tlist[0], parameters, tcll[0]); return tlist; } }