sem_ch6.adb (Possible_Freeze): If the type is an incomplete CW type...
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. From-SVN: r235195
This commit is contained in:
parent
16e764a7f4
commit
681014998b
@ -1,3 +1,10 @@
|
||||
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
|
||||
|
@ -5251,8 +5251,9 @@ package body Sem_Ch6 is
|
||||
-- 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 --
|
||||
@ -5269,7 +5270,8 @@ package body Sem_Ch6 is
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user