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]

[Ada] Visibility of private declaration in parent of child instantiation


Tested on i686-linux, committed on trunk

When compiling an instance I of a generic child unit, the parent instances are
placed on the scope stack. When compiling the private part of the child unit,
the private declarations of the parents are made immediately visible. A parent
unit P may be a hidden open scope because it also contains an instantiation
I1 (which itself contains the instance I). During the compilation of I, P
is not a hidden scope. In particular, if the compilation of I is interrupted
by a call to rstfind, the save/restore mechanism must recover the full
visibility on the entities of P.

This is another complication caused by the rtsfind mechanism, and the absence
of a single abstraction to represent the visibility environment for the
instantiation of a generic child unit.

No simple example.

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Install_Parent_Private_Declarations): If the private
	declarations of a parent unit are made visible when compiling a child
	instance, the parent is not a hidden open scope, even though it may
	contain other pending instance.
	
	* sem_ch8.adb (Restore_Scope_Stack): If an entry on the stack is a
	hidden open scope for some child instance, it does affect the
	visibility status of other stach entries.
	(Analyze_Object_Renaming): Check that a class-wide object cannot be
	renamed as an object of a specific type.

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]