From e6dcb22a7cf32bba6d45a300428215585d7fa1c7 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: Thu, 31 Jan 2019 21:27:18 +0100 Subject: [PATCH] bug fix #1685 --- NETGenerator/Helpers.cs | 2 ++ TestSuite/foreachmultiarray1.pas | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 TestSuite/foreachmultiarray1.pas diff --git a/NETGenerator/Helpers.cs b/NETGenerator/Helpers.cs index 230b52d63..95bb169cd 100644 --- a/NETGenerator/Helpers.cs +++ b/NETGenerator/Helpers.cs @@ -829,6 +829,8 @@ namespace PascalABCCompiler.NETGenerator { foreach (Type gt in t.GetGenericArguments()) if (IsConstructedGenericType(gt)) return true; + if (t.IsArray) + return IsConstructedGenericType(t.GetElementType()); return false; } diff --git a/TestSuite/foreachmultiarray1.pas b/TestSuite/foreachmultiarray1.pas new file mode 100644 index 000000000..8c9f86b63 --- /dev/null +++ b/TestSuite/foreachmultiarray1.pas @@ -0,0 +1,24 @@ +type + T = class + end; + +var o: T; + +procedure p(a: array of array of T); +begin + foreach var x in a do + foreach var y in x do + begin + o := y; + end; +end; + +begin + var a: array of array of T; + SetLength(a, 2); + SetLength(a[0], 2); + SetLength(a[1], 2); + a[1][1] := new T; + p(a); + assert(a[1][1] = o); +end. \ No newline at end of file