exp_attr.adb, [...]: Code clean up.
2009-04-08 Robert Dewar <dewar@adacore.com> * exp_attr.adb, sem_attr.adb, sem_util.adb: Code clean up. From-SVN: r145741
This commit is contained in:
parent
ff69f95af0
commit
ae8c7d8762
@ -1,3 +1,7 @@
|
|||||||
|
2009-04-08 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
|
* exp_attr.adb, sem_attr.adb, sem_util.adb: Code clean up.
|
||||||
|
|
||||||
2009-04-08 Robert Dewar <dewar@adacore.com>
|
2009-04-08 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
* sem_cat.adb (Check_Categorization_Dependencies): Handle Preelaborate
|
* sem_cat.adb (Check_Categorization_Dependencies): Handle Preelaborate
|
||||||
|
@ -867,7 +867,9 @@ package body Exp_Attr is
|
|||||||
-- If the prefix of an Access attribute is a dereference of an
|
-- If the prefix of an Access attribute is a dereference of an
|
||||||
-- access parameter (or a renaming of such a dereference, or a
|
-- access parameter (or a renaming of such a dereference, or a
|
||||||
-- subcomponent of such a dereference) and the context is a
|
-- subcomponent of such a dereference) and the context is a
|
||||||
-- general access type (but not an anonymous access type), then
|
-- general access type (including the type of an object or
|
||||||
|
-- component with an access_definition, but not the anonymous
|
||||||
|
-- type of an access parameter or access discriminant), then
|
||||||
-- apply an accessibility check to the access parameter. We used
|
-- apply an accessibility check to the access parameter. We used
|
||||||
-- to rewrite the access parameter as a type conversion, but that
|
-- to rewrite the access parameter as a type conversion, but that
|
||||||
-- could only be done if the immediate prefix of the Access
|
-- could only be done if the immediate prefix of the Access
|
||||||
@ -882,7 +884,8 @@ package body Exp_Attr is
|
|||||||
elsif Id = Attribute_Access
|
elsif Id = Attribute_Access
|
||||||
and then Nkind (Enc_Object) = N_Explicit_Dereference
|
and then Nkind (Enc_Object) = N_Explicit_Dereference
|
||||||
and then Is_Entity_Name (Prefix (Enc_Object))
|
and then Is_Entity_Name (Prefix (Enc_Object))
|
||||||
and then Ekind (Btyp) = E_General_Access_Type
|
and then (Ekind (Btyp) = E_General_Access_Type
|
||||||
|
or else Is_Local_Anonymous_Access (Btyp))
|
||||||
and then Ekind (Entity (Prefix (Enc_Object))) in Formal_Kind
|
and then Ekind (Entity (Prefix (Enc_Object))) in Formal_Kind
|
||||||
and then Ekind (Etype (Entity (Prefix (Enc_Object))))
|
and then Ekind (Etype (Entity (Prefix (Enc_Object))))
|
||||||
= E_Anonymous_Access_Type
|
= E_Anonymous_Access_Type
|
||||||
|
@ -713,8 +713,7 @@ package body Sem_Attr is
|
|||||||
then
|
then
|
||||||
null;
|
null;
|
||||||
|
|
||||||
-- OK if reference to the current instance of a protected
|
-- OK if reference to current instance of a protected object
|
||||||
-- object.
|
|
||||||
|
|
||||||
elsif Is_Protected_Self_Reference (P) then
|
elsif Is_Protected_Self_Reference (P) then
|
||||||
null;
|
null;
|
||||||
@ -1651,8 +1650,8 @@ package body Sem_Attr is
|
|||||||
|
|
||||||
elsif Is_Protected_Self_Reference (P) then
|
elsif Is_Protected_Self_Reference (P) then
|
||||||
Error_Attr_P
|
Error_Attr_P
|
||||||
("prefix of % attribute denotes current instance " &
|
("prefix of % attribute denotes current instance "
|
||||||
"(RM 9.4(21/2))");
|
& "(RM 9.4(21/2))");
|
||||||
|
|
||||||
elsif Ekind (Entity (P)) = E_Incomplete_Type
|
elsif Ekind (Entity (P)) = E_Incomplete_Type
|
||||||
and then Present (Full_View (Entity (P)))
|
and then Present (Full_View (Entity (P)))
|
||||||
@ -2021,8 +2020,8 @@ package body Sem_Attr is
|
|||||||
-- applies to other entity-denoting expressions.
|
-- applies to other entity-denoting expressions.
|
||||||
|
|
||||||
if Is_Protected_Self_Reference (P) then
|
if Is_Protected_Self_Reference (P) then
|
||||||
-- An Address attribute on a protected object self reference
|
|
||||||
-- is legal.
|
-- Address attribute on a protected object self reference is legal
|
||||||
|
|
||||||
null;
|
null;
|
||||||
|
|
||||||
|
@ -6383,8 +6383,8 @@ package body Sem_Util is
|
|||||||
-- Is_Protected_Self_Reference --
|
-- Is_Protected_Self_Reference --
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
function Is_Protected_Self_Reference (N : Node_Id) return Boolean
|
function Is_Protected_Self_Reference (N : Node_Id) return Boolean is
|
||||||
is
|
|
||||||
function In_Access_Definition (N : Node_Id) return Boolean;
|
function In_Access_Definition (N : Node_Id) return Boolean;
|
||||||
-- Returns true if N belongs to an access definition
|
-- Returns true if N belongs to an access definition
|
||||||
|
|
||||||
@ -6392,16 +6392,19 @@ package body Sem_Util is
|
|||||||
-- In_Access_Definition --
|
-- In_Access_Definition --
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
function In_Access_Definition (N : Node_Id) return Boolean
|
function In_Access_Definition (N : Node_Id) return Boolean is
|
||||||
is
|
P : Node_Id;
|
||||||
P : Node_Id := Parent (N);
|
|
||||||
begin
|
begin
|
||||||
|
P := Parent (N);
|
||||||
while Present (P) loop
|
while Present (P) loop
|
||||||
if Nkind (P) = N_Access_Definition then
|
if Nkind (P) = N_Access_Definition then
|
||||||
return True;
|
return True;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
P := Parent (P);
|
P := Parent (P);
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
return False;
|
return False;
|
||||||
end In_Access_Definition;
|
end In_Access_Definition;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user