From 1609eddc9dd4960f410064387f6477d192387d7c Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 31 Mar 2024 10:31:22 +0200 Subject: [PATCH] #3064 --- TestSuite/generics77.pas | 13 +++++++++++++ TreeConverter/TreeConversion/syntax_tree_visitor.cs | 9 +++++++++ 2 files changed, 22 insertions(+) create mode 100644 TestSuite/generics77.pas diff --git a/TestSuite/generics77.pas b/TestSuite/generics77.pas new file mode 100644 index 000000000..b4781a5c6 --- /dev/null +++ b/TestSuite/generics77.pas @@ -0,0 +1,13 @@ +var i: integer := 0; + +// Вместо IntRange - любой тип НЕ из .dll +// Обязательно params +procedure p1(params a: array of IntRange); +begin + i := a[0].High; +end; + +begin + p1(Lst&(1..3).ToArray); + assert(i = 3); +end. diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index f11723ddb..564d975d5 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -10249,6 +10249,15 @@ namespace PascalABCCompiler.TreeConverter mc.visit(this); return; } + if (sil != null && sil.Count > 1) + { + List no_extmeth_sil = new List(); + foreach (var si in sil) + if (si.sym_info is function_node && !(si.sym_info as function_node).is_extension_method) + no_extmeth_sil.Add(si); + if (no_extmeth_sil.Count > 0) + sil = no_extmeth_sil; + } return_value(expression_value_reciving(id_right, sil, en, true)); return; }