[Ada] AI12-0204 Renaming of a prefixed view
2020-06-08 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch5.adb: Fix typo. * sem_ch8.adb (Analyze_Renamed_Primitive_Operation): Check that the prefix of a prefixed view must be renamable as an object.
This commit is contained in:
parent
072c5071e0
commit
63408d0eb2
@ -2390,7 +2390,7 @@ package body Sem_Ch5 is
|
||||
-- AI12-0047 stipulates that the domain (array or container)
|
||||
-- cannot be a component that depends on a discriminant if the
|
||||
-- enclosing object is mutable, to prevent a modification of the
|
||||
-- dowmain of iteration in the course of an iteration.
|
||||
-- domain of iteration in the course of an iteration.
|
||||
|
||||
-- If the object is an expression it has been captured in a
|
||||
-- temporary, so examine original node.
|
||||
|
@ -1826,6 +1826,7 @@ package body Sem_Ch8 is
|
||||
Is_Body : Boolean)
|
||||
is
|
||||
Old_S : Entity_Id;
|
||||
Nam : Entity_Id;
|
||||
|
||||
function Conforms
|
||||
(Subp : Entity_Id;
|
||||
@ -1902,7 +1903,7 @@ package body Sem_Ch8 is
|
||||
end if;
|
||||
|
||||
if Old_S = Any_Id then
|
||||
Error_Msg_N (" no subprogram or entry matches specification", N);
|
||||
Error_Msg_N ("no subprogram or entry matches specification", N);
|
||||
|
||||
else
|
||||
if Is_Body then
|
||||
@ -1920,6 +1921,21 @@ package body Sem_Ch8 is
|
||||
Error_Msg_N ("mode conformance error in renaming", N);
|
||||
end if;
|
||||
|
||||
-- AI12-0204: The prefix of a prefixed view that is renamed or
|
||||
-- passed as a formal subprogram must be renamable as an object.
|
||||
|
||||
Nam := Prefix (Name (N));
|
||||
|
||||
if Is_Object_Reference (Nam) then
|
||||
if Is_Dependent_Component_Of_Mutable_Object (Nam) then
|
||||
Error_Msg_N
|
||||
("illegal renaming of discriminant-dependent component",
|
||||
Nam);
|
||||
end if;
|
||||
else
|
||||
Error_Msg_N ("expect object name in renaming", Nam);
|
||||
end if;
|
||||
|
||||
-- Enforce the rule given in (RM 6.3.1 (10.1/2)): a prefixed
|
||||
-- view of a subprogram is intrinsic, because the compiler has
|
||||
-- to generate a wrapper for any call to it. If the name in a
|
||||
|
Loading…
Reference in New Issue
Block a user