diff options
author | Justin Squirek <squirek@adacore.com> | 2020-03-19 16:59:30 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-12 04:29:10 -0400 |
commit | 695a27fbb77c02fedb946c8c8349f108629bd45f (patch) | |
tree | 843ecc001b9bd1db4151c7763935a9375b3b6ceb | |
parent | 5fdf7945d9286999d413f1a7232479575ac51bb6 (diff) | |
download | gcc-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.adb | 13 |
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 |