2
0
Эх сурвалжийг харах

* don't throw an internalerror in case of an illegal assignment to an open array, resolves #40662

florian 1 жил өмнө
parent
commit
3cf7890352

+ 5 - 1
compiler/nld.pas

@@ -722,7 +722,11 @@ implementation
 
         { assignments to formaldefs and open arrays aren't allowed }
         if is_open_array(left.resultdef) then
-          CGMessage(type_e_assignment_not_allowed)
+          begin
+            CGMessage(type_e_assignment_not_allowed);
+            result:=cerrornode.create;
+            exit;
+          end
         else if (left.resultdef.typ=formaldef) then
           if not(target_info.system in systems_managed_vm) then
             CGMessage(type_e_assignment_not_allowed)

+ 11 - 0
tests/webtbf/tw40662.pp

@@ -0,0 +1,11 @@
+{ %fail }
+program test;
+
+procedure proc(var values: array of string);
+begin
+  values := ['hi']; // project1.lpr(5,10) Error: Assignments to formal parameters and open arrays are not possible
+                    // project1.lpr(5,13) Error: Internal error 99080501
+end;
+
+begin
+end.