sem_ch3.ads, [...] (Build_Discriminal): Add link to original discriminant.
2005-11-14 Ed Schonberg <schonberg@adacore.com>
Javier Miranda <miranda@adacore.com>
* sem_ch3.ads, sem_ch3.adb (Build_Discriminal): Add link to original
discriminant.
(Build_Private_Derived_Type): The entity of the created full view of the
derived type does not come from source. If after installing the private
declarations of the parent scope the parent is still private, use its
full view to construct the full declaration of the derived type.
(Build_Derived_Record_Type): Relax the condition that controls the
execution of the check that verifies that the partial view and
the full view agree in the set of implemented interfaces. In
addition, this test now only takes into account the progenitors.
(Derive_Interface_Subprograms): No need to derive subprograms
of ancestors that are interfaces.
(Derive_Subprograms): Remove formal No_Predefined_Prims and the
associated code.
Change name Is_Package to Is_Package_Or_Generic_Package
(Complete_Subprograms_Derivation): Handle the case in which the full
view is a transitive derivation of the ancestor of the partial view.
(Process_Full_View): Rename local subprogram Find_Interface_In_
Descendant to Find_Ancestor_Interface to leave the code more clear.
Remove wrong code that avoids the generation of an error message
when the immediate ancestor of the partial view is an interface.
In addition some minor reorganization of the code has been done to
leave it more clear.
(Analyze_Type_Declaration): If type has previous incomplete tagged
partial view, inherit properly its primitive operations.
(Collect_Interfaces): Make public, for analysis of formal
interfaces.
(Analyze_Interface_Declaration): New procedure for use for regular and
formal interface declarations.
(Build_Derived_Record_Type): Add support for private types to the code
that checks if a tagged type implements abstract interfaces.
(Check_Aliased_Component_Type): The test applies in the spec of an
instance as well.
(Access_Type_Declaration): Clean up declaration of malformed type
declared as an access to its own classwide type, to prevent cascaded
crash.
(Collect_Interfaces): For private extensions and for derived task types
and derived protected types, the parent may be an interface that must
be included in the interface list.
(Access_Definition): If the designated type is an interface that may
contain tasks, create Master_Id for it before analyzing the expression
of the declaration, which may be an allocator.
(Record_Type_Declaration): Set properly the interface kind, for use
in allocators, the creation of master id's for task interfaces, etc.
From-SVN: r107000