aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Squirek <squirek@adacore.com>2020-03-19 16:59:30 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-06-12 04:29:10 -0400
commit695a27fbb77c02fedb946c8c8349f108629bd45f (patch)
tree843ecc001b9bd1db4151c7763935a9375b3b6ceb
parent5fdf7945d9286999d413f1a7232479575ac51bb6 (diff)
downloadgcc-695a27fbb77c02fedb946c8c8349f108629bd45f.zip
gcc-695a27fbb77c02fedb946c8c8349f108629bd45f.tar.gz
gcc-695a27fbb77c02fedb946c8c8349f108629bd45f.tar.bz2
[Ada] Missing accessibility error on object in type conversion
2020-06-12 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_util.adb (Object_Access_Level): Add processing of implicit dereferences.
-rw-r--r--gcc/ada/sem_util.adb13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 207d9d2..3ae8264 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -23697,12 +23697,23 @@ package body Sem_Util is
-- Local variables
E : Entity_Id;
- Orig_Obj : constant Node_Id := Original_Node (Obj);
+ Orig_Obj : Node_Id := Original_Node (Obj);
Orig_Pre : Node_Id;
-- Start of processing for Object_Access_Level
begin
+ -- In the case of an expanded implicit dereference we swap the original
+ -- object to be the expanded conversion.
+
+ if Nkind (Obj) = N_Explicit_Dereference
+ and then Nkind (Orig_Obj) /= N_Explicit_Dereference
+ then
+ Orig_Obj := Obj;
+ end if;
+
+ -- Calculate the object node's accessibility level
+
if Nkind (Orig_Obj) = N_Defining_Identifier
or else Is_Entity_Name (Orig_Obj)
then