[Ada] Fix small fallout of previous change for allocator
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 2 May 2020 09:35:42 +0000 (11:35 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 19 Jun 2020 08:17:25 +0000 (04:17 -0400)
2020-06-19  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Qualified_Expression): Do not override the
type of the node when it is unconstrained if it is for an allocator.

gcc/ada/sem_res.adb

index e4c0c072ab9f13d5b702630b3f6a947cdfee8509..46f140932b8d171a46e2bc5a44ee1bc41096be43 100644 (file)
@@ -10161,10 +10161,12 @@ package body Sem_Res is
 
       --  If the target type is unconstrained, then we reset the type of the
       --  result from the type of the expression. For other cases, the actual
-      --  subtype of the expression is the target type.
+      --  subtype of the expression is the target type. But we avoid doing it
+      --  for an allocator since this is not needed and might be problematic.
 
       if Is_Composite_Type (Target_Typ)
         and then not Is_Constrained (Target_Typ)
+        and then Nkind (Parent (N)) /= N_Allocator
       then
          Set_Etype (N, Etype (Expr));
       end if;