From: ncohen@watson.ibm.com (Norman H. Cohen)
Subject: Re: Subprogram Renaming
Date: 1996/04/12
Date: 1996-04-12T00:00:00+00:00 [thread overview]
Message-ID: <4kmgha$139s@watnews1.watson.ibm.com> (raw)
In-Reply-To: 316E12F2.37BC@ehs.ericsson.se
In article <316E12F2.37BC@ehs.ericsson.se>, Jonas Nygren
<ehsjony@ehs.ericsson.se> writes:
|> > package Integer_Dequeues is
|> > type Dequeue_Type is private;
...
|>
|> procedure Remove_All (Dequeue: in out Dequeue_Type);
|>
|> > private
|> > type Dequeue_Type is ...;
|> > end Integer_Dequeues;
|> >
|> > with Integer_Dequeues;
|> > package Integer_Stacks is
|> > type Stack_Type is private;
...
|>
|> procedure Remove_All (Stack: in out Stack_Type);
|>
|> > private
|> > use Integer_Dequeues;
|> > type Stack_Type is new Dequeue_Type;
...
|>
|> procedure Remove_All (Stack: in out Stack_Type)
|> renames Remove_All; -- Does not work,
|> -- Gnat e.g. creates a recursive call (reported)
|>
|> > end Integer_Stacks;
The explicit declaration of Remove_All in the visible part of
Integer_Stacks hides all homographs later in the same declaration, and
the version implicitly declared after the derived-type declaration is a
homograph of the explicitly declared version. Thus you're trying to
rename the explicitly declared Remove_All as itself.
Here's an ugly solution:
package Integer_Stacks is
type Stack_Type is private;
...
procedure Remove_All (Stack: in out Stack_Type);
private
package Inner is
type Stack_Parent_Type is new Integer_Dequeues.Dequeue_Type;
procedure Parent_Remove_All
(Stack: Stack_Parent_Type) renames Remove_All;
...
end Inner;
type Stack_Type is new Inner.Stack_Parent_Type;
procedure Remove_All (Stack: in out Stack_Type)
renames Parent_Remove_All;
-- Inherited from Inner.Remove_All
...
end Integer_Stacks;
At least the ugliness is hidden in the private part and has no runtime
overhead.
--
Norman H. Cohen ncohen@watson.ibm.com
next prev parent reply other threads:[~1996-04-12 0:00 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <md5:FE4AB546A8392541EDC1E3FE12E3D8AF>
1996-04-09 0:00 ` Subprogram Renaming James A. Squire
1996-04-09 0:00 ` Robert Dewar
1996-04-10 0:00 ` Robert A Duff
1996-04-11 0:00 ` Mark A Biggar
1996-04-10 0:00 ` johndoe
1996-04-10 0:00 ` Norman H. Cohen
1996-04-11 0:00 ` Norman H. Cohen
1996-04-12 0:00 ` Jonas Nygren
1996-04-12 0:00 ` Norman H. Cohen [this message]
1996-04-13 0:00 ` Robert A Duff
1996-04-15 0:00 ` Norman H. Cohen
[not found] <md5:3CC2294B6049DDBD8790280EABCEDE81>
1996-04-12 0:00 ` James A. Squire
[not found] <md5:95D854EBD1A47E0E86027A3CC7DBD9A4>
1996-04-10 0:00 ` James A. Squire
1996-04-10 0:00 ` Robert Dewar
1996-04-11 0:00 ` Jonas Nygren
1996-04-11 0:00 ` Robert Dewar
1996-04-12 0:00 ` Jonas Nygren
1996-04-10 0:00 ` Robert A Duff
1996-04-11 0:00 ` Adam Beneschan
1996-04-11 0:00 ` Robert Dewar
1996-04-11 0:00 ` Robert A Duff
1996-04-10 0:00 ` johndoe
[not found] <md5:88A5E8822105A2023A0A951BB5EC646E>
1996-04-10 0:00 ` James A. Squire
[not found] <md5:87494FB95037B9578F62831DE10B6BB3>
1996-04-10 0:00 ` James A. Squire
[not found] <md5:046A59600C3FEFC327385C3E914D6997>
1996-04-08 0:00 ` James A. Squire
1996-04-08 0:00 ` Robert Dewar
1996-04-09 0:00 ` Gary McKee
1996-04-09 0:00 ` Robert A Duff
[not found] <md5:C24D8C2EE138D9627FB8B93E2E35D9F3>
1996-04-05 0:00 ` James A. Squire
1996-04-06 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox