This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Tested on i686-linux, committed on trunk.
When a formal package P is declared as an instance of a generic package
G without a box, we must check that the parameters of the actual instance
I match those given in the declaration for P. The validation is performed
by constructing I2, a new instance of G, using the formal part of P, ana-
lyzing I2 in the context of the current instance, and verifying that its
actuals match the actuals of I. If G itself comes from a prior formal
parameter, its identity in the instance must be retrieved from the current
instance mapping, and it is this identity that must be used in the
declaration of I2.
gnat.dg/env_compile_capacity.adb will now compile quietly.
Also improve the tree structure in some cases for better ASIS use.
AI-317 extends the functionality of formal packages, by allowing them
to be specified with a partial list of actuals, rather the all-or-none
approach of Ada 95. A formal package can be specified with a box (<>)
or individual generic associations can carry a box while others have
real actuals. The visibility rules for for generic formals of formal
packages generalize those of Ada95, namely a formal is visible in the
enclosing generic if it is specified with a box, explicitly or implicitly.
gnat.dg/layered_instance.adb will now compile quietly.
Finally, when a formal type is a derived type the analysis of its declaration
introduces a subtype if the parent is constrained. If the parent itself
is a derived type the ultimate ancestor may be unconstrained, but the
legality check must be performed against the given formal, to prevent
spurious errors.
See gnat.dg/specs/formal_type.ads
2006-10-31 Ed Schonberg <schonberg@adacore.com>
Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch12.ads, sem_ch12.adb (Save_References): If node is an operator
that has been constant-folded, preserve information of original tree,
for ASIS uses.
(Analyze_Formal_Derived_Type): Set the limited present flag of the newly
generated private extension declaration if the formal derived type is
synchronized. Carry synchronized present over to the generated private
extension.
(Validate_Derived_Type_Instance): Ensure that the actual of a
synchronized formal derived type is a synchronized tagged type.
(Instantiate_Formal_Package): When creating the instantiation used to
validate the actual package of a formal declared without a box, check
whether the formal itself depends on a prior actual.
(Instantiate_Formal_Subprogram): Create new entities for the defining
identifiers of the formals in the renaming declaration, for ASIS use.
(Instantiate_Formal_Subprogram, Instantiate_Formal_Type): When creating
a renaming declaration or a subtype declaration for an actual in an
instance, capture location information of declaration in generic, for
ASIS use.
(Instantiate_Formal_Package): Add comments on needed additional tests.
AI-317 (partial parametrization) is fully implemented.
(Validate_Private_Type_Instance): Add check for actual which
must have preelaborable initialization
Use new // insertion for some continuation messages
(Analyze_Formal_Object_Declaration): Change usage of Expression to
Default_Expression. Add type retrieval when the declaration has an
access definition. Update premature usage of incomplete type check.
(Check_Access_Definition): New subsidiary routine. Check whether the
current compilation version is Ada 05 and the supplied node has an
access definition.
(Instantiate object): Alphabetize local variables. Handle the creation
of new renaming declarations with respect to the kind of definition
used - either an access definition or a subtype mark. Guard against
unnecessary error message in the context of anonymous access types after
they have been resolved. Add check for required null exclusion in a
formal object declaration.
(Switch_View): A private subtype of a non-private type needs to be
switched (the base type can have been switched without its private
dependents because of the last branch of Check_Private_View.
(Check_Private_View): Do not recompute Base_Type (T), instead use cached
value from BT.
(Instantiate_Type): Emit an error message whenever a class-wide type of
a tagged incomplete type is used as a generic actual.
(Find_Actual_Type): Extend routine to handle a component type in a child
unit that is imported from a formal package in a parent.
(Validate_Derived_Type_Instance): Check that analyzed formal and actual
agree on constrainedness, rather than checking against ultimate ancestor
(Instantiate_Subprogram_Body): Create a cross-reference link to the
generic body, for navigation purposes.
Attachment:
difs
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |