Seen : in out Elist_Id)
is
begin
+ -- Set name of the aspect for error messages
+ Error_Msg_Name_1 := Nam;
+
-- The relaxed parameter is a formal parameter
if Nkind (Param) in N_Identifier | N_Expanded_Name then
pragma Assert (Is_Formal (Item));
+ -- It must not have scalar or access type
+
+ if Is_Elementary_Type (Etype (Item)) then
+ Error_Msg_N ("illegal aspect % item", Param);
+ Error_Msg_N
+ ("\item must not have elementary type", Param);
+ end if;
+
-- Detect duplicated items
if Contains (Seen, Item) then
and then
Entity (Pref) = Subp_Id
then
+ -- Function result must not have scalar or access
+ -- type.
+
+ if Is_Elementary_Type (Etype (Pref)) then
+ Error_Msg_N ("illegal aspect % item", Param);
+ Error_Msg_N
+ ("\function result must not have elementary"
+ & " type", Param);
+ end if;
+
-- Detect duplicated items
if Contains (Seen, Subp_Id) then
if not Is_OK_Static_Expression
(Expression (Assoc))
then
+ Error_Msg_Name_1 := Nam;
Error_Msg_N
("expression of aspect %" &
"must be static", Aspect);
end if;
else
+ Error_Msg_Name_1 := Nam;
Error_Msg_N
("illegal aspect % expression", Expr);
end if;