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] |