From: Martin Dowie <martin.dowie@btopenworld.com>
Subject: Re: advice on package design
Date: Thu, 17 Mar 2005 19:47:20 +0000 (UTC)
Date: 2005-03-17T19:47:20+00:00 [thread overview]
Message-ID: <d1cms8$knl$1@titan.btinternet.com> (raw)
In-Reply-To: <wcc7jk6rsvg.fsf@shell01.TheWorld.com>
Robert A Duff wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>
>
>>On 17 Mar 2005 09:04:26 -0500, Robert A Duff wrote:
>>
>>
>>>"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>>
>>>>I agree with the idea, but I think that hiding should appear in a
>>>>declarative part. Less probably it should also qualify the thing being
>>>>hidden (like renames does):
>>>
>>>I don't believe in declarative parts. I think declare/begin/end
>>>should not be required just because I want to declare a constant
>>>or something.
>>
>>Disagree. I don't like the idea of something changing its meaning within
>>the same scope, even if that is non-existing -> exiting. I have to tolerate
>>this in a declarative region because probably there is no better way to do
>>it. But I don't want to let it leak out of the quarantine zone.
>
>
> I don't understand what you mean about "changing meaning".
> I just want to be able to write things like:
>
> for I in A'Range loop
> This_Component: constant T := A(I);
> ... several uses of This_Component
> end loop;
>
> without adding three extra (useless) lines of code.
> And we agreed that if there's another thing called This_Component,
> this This_Component should not hide that This_Component.
>
> The "hide" command I proposed is of dubious value, but if it were
> allowed, I wouldn't mind restricting it to whole procedures
> or something. Or not. But either way, I don't like the separation
> of "declarations" and "statements".
The bit about declarations and statements I don't like is where
exceptions occur...
e.g.
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
function Foo (I : Integer) return Integer is
I2 : Integer := I + 1;
begin
return I2;
exception
when others =>
return 0;
end Foo;
procedure Bar is
I : Integer;
begin
I := Foo (Integer'Last);
end Bar;
begin
Bar;
exception
when others =>
Put_Line ("Rats... why not catch it in 'Foo'?");
end Main;
I've never understood why this needs to be this way...
Cheers
-- Martin
next prev parent reply other threads:[~2005-03-17 19:47 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-07 16:23 advice on package design spambox
2005-03-07 21:08 ` Dmitry A. Kazakov
2005-03-08 12:48 ` spambox
2005-03-08 17:18 ` Dmitry A. Kazakov
2005-03-12 19:57 ` Robert A Duff
2005-03-12 20:45 ` Dmitry A. Kazakov
2005-03-12 21:59 ` Robert A Duff
2005-03-13 9:23 ` Dmitry A. Kazakov
2005-03-16 20:41 ` Robert A Duff
2005-03-17 10:22 ` Dmitry A. Kazakov
2005-03-17 14:04 ` Robert A Duff
2005-03-17 15:59 ` Dmitry A. Kazakov
2005-03-17 19:10 ` Robert A Duff
2005-03-17 19:47 ` Martin Dowie [this message]
2005-03-17 20:55 ` Robert A Duff
2005-03-17 21:14 ` Marius Amado Alves
2005-03-18 9:31 ` Martin Dowie
2005-03-18 9:38 ` Martin Dowie
2005-03-21 16:19 ` Robert A Duff
2005-03-17 20:48 ` Dmitry A. Kazakov
2005-03-17 21:26 ` Robert A Duff
2005-03-18 3:06 ` Jared
2005-03-18 10:00 ` Dmitry A. Kazakov
2005-03-21 16:17 ` Robert A Duff
2005-03-21 18:16 ` Dmitry A. Kazakov
2005-03-21 20:35 ` Robert A Duff
2005-03-22 10:55 ` Dmitry A. Kazakov
2005-03-17 23:23 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox