[Ada] Suggest use of First_Valid/Last_Valid on type with static predicate
Attributes First_Valid/Last_Valid can be used on types with static predicate, instead of First/Last/Range. Include that suggestion in the corresponding error message. gcc/ada/ * sem_util.adb (Bad_Predicated_Subtype_Use): Add continuation message.
This commit is contained in:
parent
c329830825
commit
655ca5aaa9
1 changed files with 25 additions and 0 deletions
|
@ -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.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue