From ac059b02c2377d8fc90e153498bfeb83a261f567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Wed, 8 Aug 2018 14:35:49 +0200 Subject: [PATCH] bug fix #980 --- TestSuite/extensionmethods30.pas | 12 ++++++++++++ TreeConverter/TreeRealization/types.cs | 14 ++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 TestSuite/extensionmethods30.pas diff --git a/TestSuite/extensionmethods30.pas b/TestSuite/extensionmethods30.pas new file mode 100644 index 000000000..94b79d0d7 --- /dev/null +++ b/TestSuite/extensionmethods30.pas @@ -0,0 +1,12 @@ +begin + var d:=new Dictionary; + d.Add(1, 2); + var s:sequence of integer := d.Values + 5; + var s2: sequence of byte := d.Keys + byte(5); + var a := s.ToArray(); + assert(a[0] = 2); + assert(a[1] = 5); + var a2 := s2.ToArray(); + assert(a2[0] = 1); + assert(a2[1] = 5); +end. \ No newline at end of file diff --git a/TreeConverter/TreeRealization/types.cs b/TreeConverter/TreeRealization/types.cs index 9df531848..141743372 100644 --- a/TreeConverter/TreeRealization/types.cs +++ b/TreeConverter/TreeRealization/types.cs @@ -3309,7 +3309,7 @@ namespace PascalABCCompiler.TreeRealization sil = bas_type.scope.SymbolTable.Find(bas_type.scope, name); bas_type = bas_type.base_type as compiled_type_node; } - if (sil == null) + //if (sil == null || true) { for (int i = 0; i < ImplementingInterfaces.Count; i++) { @@ -3318,10 +3318,16 @@ namespace PascalABCCompiler.TreeRealization ctn = ctn.original_generic as compiled_type_node; if (ctn != null && ctn.scope != null) { - sil = ctn.scope.SymbolTable.Find(ctn.scope, name); + List sil3 = ctn.scope.SymbolTable.Find(ctn.scope, name); + if (sil3 != null) + { + if (sil != null) + sil.AddRange(sil3); + else + sil = sil3; + } } - if (sil != null) - break; + } }