comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Selective suppression of warnings --- gnat on GNU/Linux
Date: Tue, 30 Dec 2008 00:03:52 -0800 (PST)
Date: 2008-12-30T00:03:52-08:00	[thread overview]
Message-ID: <57b8ccae-e5b8-448e-a6d1-86145fc4d03c@s1g2000prg.googlegroups.com> (raw)
In-Reply-To: 7a6baa71-80e8-4f3a-80b6-34935bda2fc0@r10g2000prf.googlegroups.com

On Dec 30, 4:13 am, Michael Mounteney <gat...@landcroft.co.uk> wrote:
> Hello, I am trying to build an application of which some of the source
> is automatically translated from Pascal, on the fly.  The problem is
> that the automatically-translated source is causing a lot of spurious
> warnings about declarations not being used.  This is because the
> Pascal code has many instances of:
>
>      type
>           somerange = 1..10;
>           somestruct = record ... end;
>
> which is translated into Ada as
>
>      type somerange is new integer range 1 .. 10;
>
>      type somestruct is record ... end record;
>
> but the problem is that any operators such as + and = are not visible
> in other units.  The solution to that is to rename the operators in
> the client units, thus:
>
>      with stage3;    -- contains definitions of somerange, somestruct
> etc.
>
>      package body myusage is
>
>           function "=" (L, R : in stage3.somestruct) return Boolean
> renames stage3."=";
>           function "+" (L, R : in stage3.somerange) return
> stage3.somerange renames stage3."+";
>           ..........
>      end myusage;
>
> without those renamings, any usage of = and + within the body of
> myusage are flagged as errors owing to lack of visibility/
> qualification.
>
> The translator is a rather crude line-by-line affair written in
> Haskell that only performs partial analysis of the source, and
> certainly isn't up to identifying the arguments to operators within
> expressions.  Thus, it produces the renaming clauses if it encounters
> the type name is the source;  e.g., if it sees somerange, it outputs
> all the renamings for somerange.  However, the renamings usually are
> not required, so gnat warns about them.  Normally, this would not be a
> problem;  one would simply remove the unneeded declaration from the
> source.  I did try putting the declarations into another package and
> then "with" and "use" that, but then the warning changes to "no
> declarations used from the package".
>
> I really really really don't like "use" anyway and prefer always to
> qualify imported names.
>
> What I'd like is a pragma that switches-off and switches-on the
> warning over the specific range of lines containing the renamings, but
> no such seems to be available.  I don't want to switch off the warning
> from the command line as that will suppress valid warnings.
>
> Is there another way ?  Is there some rearrangement of the source that
> WOULD suppress the unwanted warnings.
>
> So the question:

Have you tried replacing the renaming declarations with "use type
somerange;" ? One such clause applies to all operators. You will get
fewer warnings, as if a single operator is used then the "use type"
clause does not cause a warning.

--
Ludovic Brenta.



  reply	other threads:[~2008-12-30  8:03 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-30  3:13 Selective suppression of warnings --- gnat on GNU/Linux Michael Mounteney
2008-12-30  8:03 ` Ludovic Brenta [this message]
2008-12-30 22:49   ` Michael Mounteney
2008-12-30 23:26     ` Robert A Duff
2008-12-30 11:01 ` (see below)
2008-12-30 11:37   ` Georg Bauhaus
2008-12-30 12:05     ` (see below)
2008-12-30 14:11       ` Pascal ranges (was: Selective suppression of warnings --- gnat on GNU/Linux) Georg Bauhaus
2008-12-30 20:19         ` (see below)
2008-12-30 23:19           ` Pascal ranges Robert A Duff
2008-12-30 23:34             ` (see below)
2008-12-31  0:07               ` Robert A Duff
2008-12-31  0:32                 ` (see below)
2008-12-30 23:13 ` Selective suppression of warnings --- gnat on GNU/Linux Robert A Duff
2008-12-31  9:46   ` Jean-Pierre Rosen
2008-12-31 14:55     ` Robert A Duff
2008-12-31 16:13       ` Jean-Pierre Rosen
2008-12-31 20:01         ` Robert A Duff
2008-12-31 18:43     ` (see below)
2008-12-31 19:49       ` Robert A Duff
2008-12-31 20:24         ` Jeffrey R. Carter
2008-12-31 22:38           ` Robert A Duff
2008-12-31 19:46 ` Jerry
2008-12-31 22:39   ` Robert A Duff
2008-12-31 23:37   ` Michael Mounteney
2009-01-01  9:45   ` sjw
replies disabled

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