From 7593c5a1d318eab571600319e5d4a093bb0b5f42 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 6 Feb 2022 10:40:44 +0100 Subject: [PATCH] #2629 --- Compiler/PCU/PCUReader.cs | 16 ++++++++++++++-- TestSuite/units/u_namedisambigous1.pas | 7 +++++++ TestSuite/usesunits/use_namedisambigous1.pas | 4 ++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 TestSuite/units/u_namedisambigous1.pas create mode 100644 TestSuite/usesunits/use_namedisambigous1.pas diff --git a/Compiler/PCU/PCUReader.cs b/Compiler/PCU/PCUReader.cs index a045a8cad..256e67c4e 100644 --- a/Compiler/PCU/PCUReader.cs +++ b/Compiler/PCU/PCUReader.cs @@ -963,7 +963,13 @@ namespace PascalABCCompiler.PCU return mi as FieldInfo; //FieldInfo mi = t.GetField(pcu_file.dotnet_names[off].name); List mis = NetHelper.NetHelper.GetMembers(t, pcu_file.dotnet_names[off].name); - FieldInfo fi = (FieldInfo)mis[0]; + FieldInfo fi = null; + foreach (MemberInfo mi2 in mis) + if (mi2 is FieldInfo) + { + fi = (FieldInfo)mi2; + break; + } dot_net_cache[off] = fi; return fi; } @@ -994,7 +1000,13 @@ namespace PascalABCCompiler.PCU return mi as PropertyInfo; //FieldInfo mi = t.GetField(pcu_file.dotnet_names[off].name); List mis = NetHelper.NetHelper.GetMembers(t, pcu_file.dotnet_names[off].name); - PropertyInfo pi = (PropertyInfo)mis[0]; + PropertyInfo pi = null; + foreach (MemberInfo mi2 in mis) + if (mi2 is PropertyInfo) + { + pi = (PropertyInfo)mi2; + break; + } dot_net_cache[off] = pi; return pi; } diff --git a/TestSuite/units/u_namedisambigous1.pas b/TestSuite/units/u_namedisambigous1.pas new file mode 100644 index 000000000..862577b2f --- /dev/null +++ b/TestSuite/units/u_namedisambigous1.pas @@ -0,0 +1,7 @@ +unit u_namedisambigous1; +function fun: boolean; +begin + Result := System.Globalization.UnicodeCategory.Format = System.Globalization.UnicodeCategory.ClosePunctuation; +end; + +end. \ No newline at end of file diff --git a/TestSuite/usesunits/use_namedisambigous1.pas b/TestSuite/usesunits/use_namedisambigous1.pas new file mode 100644 index 000000000..0e5c1dbe1 --- /dev/null +++ b/TestSuite/usesunits/use_namedisambigous1.pas @@ -0,0 +1,4 @@ +uses u_namedisambigous1; +begin + assert(not fun); +end. \ No newline at end of file