Jelajahi Sumber

* fix for Mantis #34355: correctly check whether the array constructor is empty (aka []) or not

git-svn-id: trunk@39882 -
svenbarth 6 tahun lalu
induk
melakukan
a8b2ad31d1
3 mengubah file dengan 20 tambahan dan 1 penghapusan
  1. 1 0
      .gitattributes
  2. 2 1
      compiler/nld.pas
  3. 17 0
      tests/webtbf/tw34355.pp

+ 1 - 0
.gitattributes

@@ -14693,6 +14693,7 @@ tests/webtbf/tw3375.pp svneol=native#text/plain
 tests/webtbf/tw3393.pp svneol=native#text/plain
 tests/webtbf/tw3395.pp svneol=native#text/plain
 tests/webtbf/tw3395a.pp svneol=native#text/plain
+tests/webtbf/tw34355.pp svneol=native#text/pascal
 tests/webtbf/tw3450.pp svneol=native#text/plain
 tests/webtbf/tw3473.pp svneol=native#text/plain
 tests/webtbf/tw3480.pp svneol=native#text/plain

+ 2 - 1
compiler/nld.pas

@@ -643,7 +643,8 @@ implementation
               (
                 (right.nodetype=arrayconstructorn) and
                 (right.resultdef.typ=arraydef) and
-                (tarraydef(right.resultdef).elementdef=voidtype)
+                (tarraydef(right.resultdef).elementdef=voidtype) and
+                tarrayconstructornode(right).isempty
               )
             ) then
          begin

+ 17 - 0
tests/webtbf/tw34355.pp

@@ -0,0 +1,17 @@
+{ %fail }
+
+program tw34355;
+{$mode objfpc}
+procedure AssignArray(const aArray: array of string);
+var
+  myArray: array of string;
+  S: string;
+begin
+  myArray := [aArray]; // << no compiler error, yet no assignment is executed
+  Writeln('Length(myArray): ', Length(myArray));
+  for S in myArray do
+    Writeln(S);
+end;
+begin
+  AssignArray(['abc', 'xyz']);
+end.