[Ada] AI12-0095 Formal types and Constrained Partial Views
authorGary Dismukes <dismukes@adacore.com>
Thu, 20 Aug 2020 23:14:43 +0000 (19:14 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 22 Oct 2020 12:11:24 +0000 (08:11 -0400)
gcc/ada/

* einfo.adb (Has_Constrained_Partial_View): Apply Base_Type to Id.
* sem_res.adb (Resolve_Actuals.Check_Aliased_Parameter): Remove
"not Is_Generic_Type" test and call
Object_Type_Has_Constrained_Partial_View instead of
Has_Constrained_Partial_View. Improve related error message to
say "does not statically match" instead of just "does not
match".

gcc/ada/einfo.adb
gcc/ada/sem_res.adb

index 63878e4e1eda59f11be4ac24a64d2778318d5f89..d4a4310e36497fa66aab60c5cae1edd35ceffff5 100644 (file)
@@ -1523,7 +1523,7 @@ package body Einfo is
    function Has_Constrained_Partial_View (Id : E) return B is
    begin
       pragma Assert (Is_Type (Id));
-      return Flag187 (Id);
+      return Flag187 (Base_Type (Id));
    end Has_Constrained_Partial_View;
 
    function Has_Controlled_Component (Id : E) return B is
index 3084012b4441d758230c9ccdf1b7827a0cdb51ce..3a3c93dd3c1b83468511b14c5160cd148e76478b 100644 (file)
@@ -3479,13 +3479,13 @@ package body Sem_Res is
 
                elsif Has_Discriminants (F_Typ)
                  and then not Is_Constrained (F_Typ)
-                 and then not Has_Constrained_Partial_View (F_Typ)
-                 and then not Is_Generic_Type (F_Typ)
+                 and then not Object_Type_Has_Constrained_Partial_View
+                                (Typ => F_Typ, Scop => Current_Scope)
                then
                   null;
 
                else
-                  Error_Msg_NE ("untagged actual does not match "
+                  Error_Msg_NE ("untagged actual does not statically match "
                                 & "aliased formal&", A, F);
                end if;