From c79e2623274cbf5441bd4bf9e47b5ac1c490855d Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Thu, 16 Jun 2022 13:48:15 +0200 Subject: [PATCH] #2668 --- TestSuite/operators2.pas | 13 +++++++++++++ .../convertion_data_and_alghoritms.cs | 7 +++++++ 2 files changed, 20 insertions(+) create mode 100644 TestSuite/operators2.pas diff --git a/TestSuite/operators2.pas b/TestSuite/operators2.pas new file mode 100644 index 000000000..3caaaff77 --- /dev/null +++ b/TestSuite/operators2.pas @@ -0,0 +1,13 @@ +type + t1 = class + + static function operator=(a,b: t1) := true; + + end; + t2 = class(t1) end; + +begin + var a := new t2; + var b := new t2; + assert(a = b); +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 318a4ec13..bcc035e7f 100644 --- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs +++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs @@ -2799,6 +2799,13 @@ namespace PascalABCCompiler.TreeConverter return set_of_possible_functions[0]; } } + if (set_of_possible_functions.Count == 2) + { + if (set_of_possible_functions[0].semantic_node_type == semantic_node_type.basic_function_node && set_of_possible_functions[1].semantic_node_type != semantic_node_type.basic_function_node) + return set_of_possible_functions[1]; + 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) + return set_of_possible_functions[0]; + } return AddError(new SeveralFunctionsCanBeCalled(loc, set_of_possible_functions)); }