GNAT would in some cases not resolve a Predicate_Failure aspect properly
and generate spurious errors of the form:

  cannot find unique type for raise expression

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

        * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Add proper
        handling of Aspect_Predicate_Failure, consistent with
        Check_Aspect_At_Freeze_Point.
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -10519,6 +10519,8 @@ package body Sem_Ch13 is
             Preanalyze_Spec_Expression (End_Decl_Expr, T);
             Pop_Type (Ent);
 
+         elsif A_Id = Aspect_Predicate_Failure then
+            Preanalyze_Spec_Expression (End_Decl_Expr, Standard_String);
          else
             Preanalyze_Spec_Expression (End_Decl_Expr, T);
          end if;


Reply via email to