+2014-05-21 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch3.adb (Build_Derived_Record_Type): Initialize Parent_Base
+ to the full view of the parent type when processing a derived type
+ which is the full view of a private type not defined in a generic
+ unit which is derived from a private type with discriminants
+ whose full view is a non-tagged record type.
+
2014-05-21 Javier Miranda <miranda@adacore.com>
* exp_ch4.adb (Expand_Allocator_Expression.Apply_Accessibility_Check):
and then Has_Discriminants (Parent_Type)
then
Parent_Base := Base_Type (Full_View (Parent_Type));
+
+ -- Handle a derived type which is the full view of a private type not
+ -- defined in a generic unit which is derived from a private type with
+ -- discriminants whose full view is a non-tagged record type.
+
+ elsif not Inside_A_Generic
+ and then Ekind (Parent_Type) = E_Private_Type
+ and then Has_Discriminants (Parent_Type)
+ and then Present (Full_View (Parent_Type))
+ and then Is_Record_Type (Full_View (Parent_Type))
+ and then not Is_Tagged_Type (Full_View (Parent_Type))
+ and then Has_Private_Declaration (Derived_Type)
+ then
+ Parent_Base := Base_Type (Full_View (Parent_Type));
else
Parent_Base := Base_Type (Parent_Type);
end if;