comp.lang.ada
 help / color / mirror / Atom feed
From: "Yannick Duchêne (Hibou57)" <yannick_duchene@yahoo.fr>
Subject: Re: Warnings about hiding
Date: Tue, 26 Oct 2010 03:16:02 +0200
Date: 2010-10-26T03:16:02+02:00	[thread overview]
Message-ID: <op.vk5sg0ioule2fv@garhos> (raw)
In-Reply-To: 44e7dff1-04f5-46ad-8521-e4fe030c9c29@26g2000yqv.googlegroups.com

Le Fri, 08 Oct 2010 14:47:05 +0200, Julian Leyh <julian@vgai.de> a écrit:

> Hi,
>
> "-gnatwh" activates warnings on hiding declarations. But sometimes,
> hiding is necessary.
>
> For example, consider this (Controlled type with it's own comparison
> operator and finalize procedure, you can reproduce the errors using
> these ads files):
>
> $ cat foo.ads
> with Ada.Finalization;
> package foo is
>    type Foobar is new Ada.Finalization.Controlled with null record;
>    function "=" (L,R : in Foobar) return Boolean;
> private
>    procedure Finalize (Object : in out Foobar);
> end foo;
> $ gnat -gnatwh -gnatc foo.ads
> gcc -c -gnatwh -gnatc foo.ads
> foo.ads:4:13: warning: declaration of "=" hides one in package
> Standard
> foo.ads:6:14: warning: declaration of "Finalize" hides one at line 3
> $
>
> The only way i see to solve this, is using pragma Warnings (Off); like
> this:
>
> $ cat bar.ads
> with Ada.Finalization;
> package bar is
>    type Barfoo is new Ada.Finalization.Controlled with null record;
> pragma Warnings(Off);
>    function "=" (L,R : in Barfoo) return Boolean;
> pragma Warnings(On);
> private
>    procedure Finalize (Object : in out Barfoo);
> end bar;
> $ gnatmake -gnatc -gnatwh bar.ads
> gcc -c -gnatwh -gnatc bar.ads
> bar.ads:8:14: warning: declaration of "Finalize" hides one at line 3
> $
>
> But that would either remove all warnings between both pragmas, or I
> would have to put them around every occurence of the hiding. I don't
> like turning all warnings off at once and I don't like adding two
> lines of source code just to prevent the warning. Still, I would like
> to remove them (without removing -gnatwh).
>
> Is there a proper way to do this?
(warnings check may be rough, this is less trustable than a conformance to  
the language semantic)
Yes, there is a cleaner way to do this : use AdaControl, which allow finer  
level of control.
http://adalog.pagesperso-orange.fr/adacontrol2.htm
You may either make a request to Jean-Pierre Rosen for commercial support,  
that is, to add this particular test in AdaControl's capabilities or else  
use the source (which is provided) to add your own hook (the source is  
mostly well designed and readable).


-- 
Si les chats miaulent et font autant de vocalises bizarres, c’est pas pour  
les chiens.



  parent reply	other threads:[~2010-10-26  1:16 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-08 12:47 Warnings about hiding Julian Leyh
2010-10-08 19:46 ` Adam Beneschan
2010-10-08 20:24   ` Simon Wright
2010-10-09  1:31 ` Vinzent Hoefler
2010-10-09  6:51   ` Randy Brukardt
2010-10-09  8:08     ` Dmitry A. Kazakov
2010-10-26  1:34       ` Yannick Duchêne (Hibou57)
2010-10-26  1:28     ` Yannick Duchêne (Hibou57)
2010-10-09 11:18 ` anon
2010-10-09 19:11   ` Simon Wright
2010-10-09 20:11     ` anon
2010-10-26  1:16 ` Yannick Duchêne (Hibou57) [this message]
2010-10-26  9:32   ` J-P. Rosen
replies disabled

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