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