From 33e8b383be5235976b216189036fda3f88b76753 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Tue, 2 Jul 2024 20:49:12 +0200 Subject: [PATCH] #3172 --- TestSuite/bigint2.pas | 7 +++++++ TreeConverter/NetWrappers/NetHelper.cs | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 TestSuite/bigint2.pas diff --git a/TestSuite/bigint2.pas b/TestSuite/bigint2.pas new file mode 100644 index 000000000..7cce009ba --- /dev/null +++ b/TestSuite/bigint2.pas @@ -0,0 +1,7 @@ +begin + var b := BigInteger(1); + var b1 := b / 2; + assert(TypeName(b1) = 'real'); + var b2 := b div 2; + assert(TypeName(b2) = 'BigInteger'); +end. \ No newline at end of file diff --git a/TreeConverter/NetWrappers/NetHelper.cs b/TreeConverter/NetWrappers/NetHelper.cs index 780dba509..f86e07ba2 100644 --- a/TreeConverter/NetWrappers/NetHelper.cs +++ b/TreeConverter/NetWrappers/NetHelper.cs @@ -1536,12 +1536,37 @@ namespace PascalABCCompiler.NetHelper //TODO: проанализировать и изменить алгоритмы, использующие поиск. //List si_list = new List(); + if (tmp_name == "/" && mis.Count > 1) + { + List tmp_mis = new List(); + bool has_fdiv_ext = false; + foreach (MemberInfo mi in mis) + { + if (mi.Name == "/") + { + tmp_mis.Add(mi); + has_fdiv_ext = true; + break; + } + } + + foreach (MemberInfo mi in mis) + { + if (mi.Name != "/" && !(has_fdiv_ext && mi.Name == "div")) + { + tmp_mis.Add(mi); + } + } + mis = tmp_mis; + } foreach (MemberInfo mi in mis) { if (mi.DeclaringType != null && PABCSystemType != null && mi.DeclaringType.Assembly == PABCSystemType.Assembly && !UsePABCRtl) continue; if (is_visible(mi)) { + //if (tmp_name == "/" && (mi.Name == "op_Division" || mi.Name == "div") && mi.DeclaringType.FullName == "System.Numerics.BigInteger") + // continue; SymbolInfo temp = null; switch (mi.MemberType) {