comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Generic private type declaration
Date: Tue, 29 Nov 2016 12:42:19 +0100
Date: 2016-11-29T12:42:19+01:00	[thread overview]
Message-ID: <o1jpiq$13df$1@gioia.aioe.org> (raw)
In-Reply-To: o1i7nt$3m1$1@franka.jacob-sparre.dk

On 28/11/2016 22:32, Randy Brukardt wrote:
> So, yes, Dmitry, the language could strengthen contracts this
> way -- if one didn't care about usability [or compatibility]).

Rather one should make contracts more complete. If the formal type "X is 
private" may or may not allow type cloning by "Y is new X" of the actual 
type, that must be a part of the contract. E.g. tagged types should not 
match or, better cloning hierarchies tagged types must be allowed.

The principal design rule should be legality to be determined 
exclusively by visible specifications.

For generic formals it would mean resolving all conflicting declarations 
in the formal part. For example:

generic
    type T is private;
package
    function "+" (Left, Right : T) return T; -- Must be illegal!

Reason: T might have "+" visible in the instantiation context. So the 
package declaration must be:

generic
    type T is private;
    without function "+" (Left, Right : T) return T;
       -- I promise there will be none
package
    function "+" (Left, Right : T) return T; -- It is OK now

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  parent reply	other threads:[~2016-11-29 11:42 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-25 17:36 Generic private type declaration Alejandro R. Mosteo
2016-11-25 19:17 ` Dmitry A. Kazakov
2016-11-28 14:54   ` Alejandro R. Mosteo
2016-11-25 19:18 ` AdaMagica
2016-11-28 14:57   ` Alejandro R. Mosteo
2016-11-25 19:38 ` G.B.
2016-11-26  8:45 ` Jacob Sparre Andersen
2016-11-26 19:18   ` Tero Koskinen
2016-11-28 15:05     ` Alejandro R. Mosteo
2016-11-28 21:32       ` Randy Brukardt
2016-11-29 11:12         ` Alejandro R. Mosteo
2016-11-29 11:42         ` Dmitry A. Kazakov [this message]
2016-11-29 23:48           ` Randy Brukardt
2016-11-28 23:25 ` Robert Eachus
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox