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
next prev 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