From 40de6d35f3ccaac9357842c26e9cabc2c1537dc2 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Wed, 1 Nov 2023 20:26:13 +0100 Subject: [PATCH] #2867 --- .../errors/err0526_deduce_generic_without_braces.pas | 5 +++++ TreeConverter/TreeConversion/syntax_tree_visitor.cs | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 TestSuite/errors/err0526_deduce_generic_without_braces.pas diff --git a/TestSuite/errors/err0526_deduce_generic_without_braces.pas b/TestSuite/errors/err0526_deduce_generic_without_braces.pas new file mode 100644 index 000000000..dd4c13bc7 --- /dev/null +++ b/TestSuite/errors/err0526_deduce_generic_without_braces.pas @@ -0,0 +1,5 @@ +//!Невозможно вывести типы-параметры обобщённой подпрограммы f1 (укажите типы-параметры явно) +function f1 := 1; +begin + var x := f1 + 2; +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 6523866d9..87f850905 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -9824,6 +9824,15 @@ namespace PascalABCCompiler.TreeConverter bfc = new common_method_call(cmn, (bfc as common_method_call).obj, bfc.location); } } + else if (bfc is common_namespace_function_call) + { + common_namespace_function_node bcnfn = (bfc as common_namespace_function_call).function_node; + if (bcnfn.is_generic_function && !bcnfn.is_generic_function_instance && bcnfn.parameters.Count == 0) + { + bcnfn = (common_namespace_function_node)generic_convertions.DeduceFunction(bcnfn, new expressions_list(), true, context, bfc.location); + bfc = new common_namespace_function_call(bcnfn, bfc.location); + } + } return bfc; }