[Ada] Double evaluation of predicate
authorArnaud Charlet <charlet@adacore.com>
Mon, 22 Jun 2020 10:18:14 +0000 (06:18 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 15 Oct 2020 09:39:09 +0000 (05:39 -0400)
gcc/ada/

* sem_ch13.adb (Add_Predicates): Prevent analyzing twice the
same pragma in case an inner package references the type with a
predicate (as opposed to defining the type).

gcc/ada/sem_ch13.adb

index 28fd1ed080cd8897b4ee701bf2d577f6d8dbbf44..a322466f2eddfbd41609a15031229fae0a5c0261 100644 (file)
@@ -9746,7 +9746,7 @@ package body Sem_Ch13 is
 
             elsif Nkind (Ritem) = N_Aspect_Specification
               and then Present (Aspect_Rep_Item (Ritem))
-              and then Scope (Typ) /= Current_Scope
+              and then Scope_Depth (Scope (Typ)) > Scope_Depth (Current_Scope)
             then
                declare
                   Prag : constant Node_Id := Aspect_Rep_Item (Ritem);