+2016-04-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch6.adb (Possible_Freeze): If the type is an incomplete
+ CW type, then the subprogram must have a delayed freeze. This
+ ensures that the backend can properly recover the full view when
+ elaborating the access subprogram declaration.
+
2016-04-19 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Resolve_Attribute, case 'Access): Freeze
-- T is the type of either a formal parameter or of the return type.
-- If T is not yet frozen and needs a delayed freeze, then the
-- subprogram itself must be delayed. If T is the limited view of an
- -- incomplete type the subprogram must be frozen as well, because
- -- T may depend on local types that have not been frozen yet.
+ -- incomplete type (or of a CW type thereof) the subprogram must be
+ -- frozen as well, because T may depend on local types that have not
+ -- been frozen yet.
---------------------
-- Possible_Freeze --
then
Set_Has_Delayed_Freeze (Designator);
- elsif Ekind (T) = E_Incomplete_Type
+ elsif (Ekind (T) = E_Incomplete_Type
+ or else Ekind (T) = E_Class_Wide_Type)
and then From_Limited_With (T)
then
Set_Has_Delayed_Freeze (Designator);