diff options
Diffstat (limited to 'gcc/ada/gcc-interface/decl.cc')
-rw-r--r-- | gcc/ada/gcc-interface/decl.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 8449c99..53c8461 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -5171,6 +5171,19 @@ Gigi_Cloned_Subtype (Entity_Id gnat_entity) && Present (Generic_Parent_Type (gnat_decl)) && Is_Entity_Name (Subtype_Indication (gnat_decl))) return Entity (Subtype_Indication (gnat_decl)); + + /* Likewise for the full view of such subtypes when they are private. */ + if (Is_Itype (gnat_entity)) + { + gnat_decl = Associated_Node_For_Itype (gnat_entity); + if (Present (gnat_decl) + && Nkind (gnat_decl) == N_Subtype_Declaration + && Is_Private_Type (Defining_Identifier (gnat_decl)) + && Full_View (Defining_Identifier (gnat_decl)) == gnat_entity + && Present (Generic_Parent_Type (gnat_decl)) + && Is_Entity_Name (Subtype_Indication (gnat_decl))) + return Entity (Subtype_Indication (gnat_decl)); + } break; default: |