comp.lang.ada
 help / color / mirror / Atom feed
From: "Dr. Michael Paus" <paus@ib-paus.com>
Subject: Re: Refactoring and Ada
Date: Thu, 07 Feb 2002 09:45:12 +0100
Date: 2002-02-07T08:45:15+00:00	[thread overview]
Message-ID: <3C623E98.646B7C0E@ib-paus.com> (raw)
In-Reply-To: 5ee5b646.0202040959.37f71ade@posting.google.com

[-- Attachment #1: Type: text/plain, Size: 1636 bytes --]

Robert Dewar wrote:

> By the way, I talked to a never-ever-use-use user of Ada
> the other day who was appalled to discover that even if
> you don't use USE clauses, you can have a case where you
> write
> 
>        a := f (x);
> 
> where there were no other occurrences of f in the same
> source file, no USE clauses, and the textual declaration
> of f was in another unit.
> 
> This is of course standard in both Ada 83 and Ada 95 (if
> you don't know how it arises, and always assumed that avoiding use
> clauses guaranteed that this could not happen,
> you have always been fooling yourself :-)
> 
> I often find that people think that avoiding use clauses
> avoids this, and requires full qualification. In fact in
> the above example, suppose the only other occurrence of
> f is in package p, then it is the case that trying to
> qualify by writing
> 
>        a := p.f (x);
> 
> is not just unnecessary, but in fact illegal.

If I understand your example correctly, it reflects a problem
which I recently had to fix in program written by someone else.
We had the requirement not to use use and so the call of f had
to be qualified as in your example above. The compiler complained
about this of course and can you imagine what the programmer did
in order to fix the problem? The type of x (B_Type) was derived from
some other type (let's say A_Type). So the programmer wrote:

       a := p.f (p.A_Type(x));

The compiler was happy and in this particular case the program
even did what it was assumed to do. The hidden bug in this
statement is a maintenance time-bomb which would not have occurred
if use had been used.

Michael

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Visitenkarte f�r Dr. Michael Paus --]
[-- Type: text/x-vcard; charset=us-ascii; name="paus.vcf", Size: 332 bytes --]

begin:vcard 
n:Paus;Michael
tel;cell:0177-2238312
tel;fax:+49-(0)711-765-4095
tel;home:+49-(0)711-765-1493
tel;work:+49-(0)711-765-4094
x-mozilla-html:FALSE
url:www.ib-paus.com
org:Ingenieurb�ro Dr. Paus
adr:;;Sch�naicher Str. 3;Stuttgart;;70597;Germany
version:2.1
email;internet:paus@ib-paus.com
fn:Dr. Michael Paus
end:vcard

  parent reply	other threads:[~2002-02-07  8:45 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-01 15:13 Refactoring and Ada Paul Anderson
2002-02-02 17:48 ` Nick Roberts
2002-02-02 20:36   ` Pat Rogers
2002-02-03  0:21     ` Nick Roberts
2002-02-03 13:53       ` Robert Dewar
2002-02-03 19:23         ` Nick Roberts
2002-02-04  2:17           ` Robert Dewar
2002-02-04 20:48             ` Nick Roberts
2002-02-04 22:31               ` Pat Rogers
2002-02-04 22:43                 ` Marin David Condic
2002-02-06  2:51                 ` Nick Roberts
2002-02-03 18:50       ` Simon Wright
2002-02-04  4:32     ` Richard Riehle
2002-02-04 12:28       ` David C. Hoos, Sr.
2002-02-04 17:03         ` Richard Riehle
2002-02-06 17:19           ` Robert A Duff
2002-02-04 17:59       ` Robert Dewar
2002-02-04 18:50         ` Pascal Obry
2002-02-05  1:07           ` Robert Dewar
2002-02-05  1:44         ` Richard Riehle
2002-02-06 17:42           ` Robert A Duff
2002-02-06 17:32         ` Robert A Duff
2002-02-07  8:45         ` Dr. Michael Paus [this message]
2002-02-07 13:54           ` Pat Rogers
2002-02-03 13:48   ` Robert Dewar
2002-02-03 19:38     ` Nick Roberts
2002-02-04  2:20       ` Robert Dewar
2002-02-08 21:21       ` Paul Anderson
2002-02-03  9:45 ` Volkert
2002-02-04  0:06 ` Refactoring and Ada (tool I'd like to have...) David Emery
2002-02-08  9:24 ` Refactoring and Ada Martin Dowie
2002-02-08 15:15   ` Ted Dennison
2002-02-08 15:52     ` Pat Rogers
2002-02-08 16:07       ` OT : " martin.m.dowie
2002-02-08 17:11         ` Pat Rogers
2002-02-09 19:46           ` martin.m.dowie
2002-02-09 23:04             ` Pat Rogers
2002-02-10 13:57               ` Martin Dowie
2002-02-08 16:06     ` martin.m.dowie
2002-02-08 17:07       ` Pat Rogers
2002-02-09 19:48         ` martin.m.dowie
2002-02-09 23:05           ` Pat Rogers
2002-02-10  1:30     ` Marc A. Criley
2002-02-10  2:58       ` tmoran
2002-02-11 15:27       ` Marin David Condic
2002-02-12 19:16         ` Simon Wright
2002-02-15 19:43           ` Marin David Condic
2002-02-15 20:33           ` Matthew Heaney
2002-02-15 21:40             ` Larry Kilgallen
2002-02-19 16:54               ` Matthew Heaney
2002-02-19 19:39                 ` Larry Kilgallen
2002-02-20  4:23                   ` Richard Riehle
2002-02-20  5:20                     ` Mark Biggar
2002-02-20  9:58                     ` Pat Rogers
2002-02-20 17:14                       ` Matthew Heaney
2002-02-20 17:18                         ` Pat Rogers
2002-02-20 18:08                           ` Matthew Heaney
2002-02-20 22:12                             ` Pat Rogers
2002-02-23 22:48                             ` Robert Dewar
2002-02-21  0:41                           ` Randy Brukardt
2002-02-21  1:31                             ` Pat Rogers
2002-02-22 14:37                             ` Pat Rogers
2002-02-22 21:23                               ` Randy Brukardt
2002-02-23 23:04                                 ` Robert Dewar
2002-02-25 20:26                                   ` Randy Brukardt
2002-02-23 23:21                                 ` Robert Dewar
2002-02-23 22:58                             ` Robert Dewar
2002-02-23 22:55                     ` Robert Dewar
2002-02-26  1:05                       ` Nick Roberts
  -- strict thread matches above, loose matches on Subject: below --
2002-02-05  6:15 Christoph Grein
2002-02-07 11:26 Christoph Grein
2002-02-07 18:31 ` Dr. Michael Paus
2002-02-08 12:45   ` Robert Dewar
2002-02-08 17:20     ` Dr. Michael Paus
2002-02-20  6:19 Christoph Grein
replies disabled

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