2005-12-05 Robert Dewar <dewar@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Dec 2005 17:21:28 +0000 (17:21 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Dec 2005 17:21:28 +0000 (17:21 +0000)
* sem_ch6.adb (Analyze_Subprogram_Body): Properly check categorization
for case where spec is categorized.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108303 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/sem_ch6.adb

index dae0621..b6c262b 100644 (file)
@@ -955,7 +955,7 @@ package body Sem_Ch6 is
                end if;
 
             else
-               --  Create a subprogram declaration, to make treatment uniform.
+               --  Create a subprogram declaration, to make treatment uniform
 
                declare
                   Subp : constant Entity_Id :=
@@ -1449,14 +1449,13 @@ package body Sem_Ch6 is
 
       if Present (Spec_Id) then
 
-         --  If a parent unit is categorized, the context of a subunit must
-         --  conform to the categorization. Conversely, if a child unit is
-         --  categorized, the parents themselves must conform.
+         --  We must conform to the categorization of our spec
 
-         if Nkind (Parent (N)) = N_Subunit then
-            Validate_Categorization_Dependency (N, Spec_Id);
+         Validate_Categorization_Dependency (N, Spec_Id);
 
-         elsif Is_Child_Unit (Spec_Id) then
+         --  And if this is a child unit, the parent units must conform
+
+         if Is_Child_Unit (Spec_Id) then
             Validate_Categorization_Dependency
               (Unit_Declaration_Node (Spec_Id), Spec_Id);
          end if;