diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 1fc2c617afa..d76b5d93511 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -1719,6 +1719,31 @@ package body Sem_Util is Error_Msg_FE (Msg, N, Typ); end if; + -- Suggest to use First_Valid/Last_Valid instead of First/Last/Range + -- if the predicate is static. + + if not Has_Dynamic_Predicate_Aspect (Typ) + and then Has_Static_Predicate (Typ) + and then Nkind (N) = N_Attribute_Reference + then + declare + Aname : constant Name_Id := Attribute_Name (N); + Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname); + begin + case Attr_Id is + when Attribute_First => + Error_Msg_F ("\use attribute First_Valid instead", N); + when Attribute_Last => + Error_Msg_F ("\use attribute Last_Valid instead", N); + when Attribute_Range => + Error_Msg_F ("\use attributes First_Valid and " + & "Last_Valid instead", N); + when others => + null; + end case; + end; + end if; + -- Emit an optional suggestion on how to remedy the error if the -- context warrants it.