comp.lang.ada
 help / color / mirror / Atom feed
From: ytomino <aghia05@gmail.com>
Cc: mailbox@dmitry-kazakov.de
Subject: Re: Class wide preconditions: error in GNAT implementation?
Date: Sat, 16 Feb 2013 05:13:53 -0800 (PST)
Date: 2013-02-16T05:13:53-08:00	[thread overview]
Message-ID: <bf5a32d8-6ee9-413d-83ed-c2f076e065e4@googlegroups.com> (raw)
In-Reply-To: <16s3mt7cm3n61$.8qu6fp1nglfq.dlg@40tude.net>

We are already inured to polymorphism. So this fact counters to our intuition.
I had been confused when I knew it. After all, I took a Eiffel book out.

On Saturday, February 16, 2013 6:28:10 PM UTC+9, Dmitry A. Kazakov wrote:
> On Fri, 15 Feb 2013 18:50:36 -0800 (PST), ytomino wrote:
> > No. It's related to correctness.
> Not when checked dynamically by the same program.
> > Precondition is a promise for caller, not callee.
> Actually it is imposed on both.

No. Precondition is imposed on only caller.

> > In this case, the caller should keep As.foo'Pre'Class because calling As.foo.
> No, the caller shall satisfy the precondition of the callee. Regarding
> inheritance, a primitive operation (callee) may weaken the precondition it
> overrides. This is why logical disjunction apply, as Randy said.

No. The caller is "client" of not Bs but As, in this case.

> Considering individual terms of the disjunction, the caller is allowed to
> satisfy at least one of them to make the call valid.

Imagine, the system is running correctly, but depending on weak precondition of the subclass.
On day, new subclass is introduced into this system.
This new subclass has strong precondition equally to the superclass.
But, existing callers is depending on weak one.
It's a bug of callers, not subclasses.

"Client" code of superclass should have been fully keeping precondition of superclass all along.

In "Design by Contact", the caller of superclass has a contract with only superclass.
Randy wrote "to allow analysis without knowing the actual tag".
This word is applied to not only analyzer machine but also human programmers.

> Note that if the callee were a class-wide operation then its precondition
> would read literally.

Of course.

If you had time, please read the discussion in http://d.puremagic.com/issues/show_bug.cgi?id=6857 .
Maybe it's more easy to understand than my words.



  reply	other threads:[~2013-02-16 13:13 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-15  3:55 Class wide preconditions: error in GNAT implementation? ytomino
2013-02-15 10:15 ` Georg Bauhaus
2013-02-15 13:16   ` ytomino
2013-02-16  1:01 ` Randy Brukardt
2013-02-16  2:50   ` ytomino
2013-02-16  9:28     ` Dmitry A. Kazakov
2013-02-16 13:13       ` ytomino [this message]
2013-02-16 16:35         ` Dmitry A. Kazakov
2013-02-16 19:55           ` ytomino
2013-02-16 20:34             ` ytomino
2013-02-18  8:30             ` Dmitry A. Kazakov
2013-02-18  9:17               ` Simon Wright
2013-02-18 14:25                 ` Dmitry A. Kazakov
2013-02-18 18:04                   ` Simon Wright
2013-02-18 19:27                     ` Dmitry A. Kazakov
2013-02-18 20:42                       ` Simon Wright
2013-02-19  9:07                         ` Dmitry A. Kazakov
2013-02-18 19:02               ` ytomino
2013-02-18 19:44                 ` Dmitry A. Kazakov
2013-02-16 15:16       ` Georg Bauhaus
2013-02-16 20:23   ` Simon Wright
2013-02-17 15:12     ` ytomino
2013-02-18 17:49       ` Simon Wright
2013-02-18 18:45         ` ytomino
replies disabled

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