comp.lang.ada
 help / color / mirror / Atom feed
From: "G.B." <rm-dash-bau-haus@dash.futureapps.de>
Subject: Re: spec/body/rep (Was: Compilation error (GNAT bug?))
Date: Tue, 27 May 2014 17:45:07 +0200
Date: 2014-05-27T17:45:06+02:00	[thread overview]
Message-ID: <5384b302$0$6663$9b4e6d93@newsspool3.arcor-online.net> (raw)
In-Reply-To: <j4oi1y5qh2lm.18ky7h8pb8wfc.dlg@40tude.net>

On 27.05.14 10:55, Dmitry A. Kazakov wrote:
> On Tue, 27 May 2014 09:22:16 +0300, Niklas Holsti wrote:
>
>> On 14-05-27 08:16 , J-P. Rosen wrote:
>>> Le 23/05/2014 23:21, Randy Brukardt a écrit :

(I hadn't seen Randy Brukardt's original reply in my news reader,
sorry for responding late. (And I should have mentioned Link_Name,
not Linker_Options.))

>> Would there be some sense in being able to specify such library-level
>> renamings as configuration pragmas? This might give us a standard way to
>> choose component versions depending on the configuration (leaving as
>> compiler-specific the way to select which configuration is to be
>> compiled... :-)

A configuration pragma seems to have the property that
just one may cover many units, whereas library level
renamings lack this formal connection, and there may be many.
(Directories, or discipline, providing for a more or less formal
mode of development.)

When the compiler knows about "representation units" (I think Bob Duff
once mentioned such a thing using this name), and the language ties
them to (the private part of) a unit, then at least programmers will
have something explicit and reliable, issues notwithstanding:

> I have issues with this approach in general. The problem is that there is
> no any check that the interfaces of the target-specific packages are same
> in the sense that all target-independent clients were compilable with any
> "implementation."

Assuming that a universal expression of "compilability" in any
configuration is nice, but likely impossible, would you still think
that what Randy has called a semantics-denying fiction could
be preserved for some aspects? For example,

    procedure Doubled (X : in out Natural)
    with Post => (if
                    X'Old <= Natural'Last / 2
                  then
                    X = X'Old * 2
                  else
                    False),
      Import,
      External_Name => "d2";


If the External_Name aspect of Doubled were moved to
a representation unit tied to whatever Doubled lives in,
then developing the program that calls Doubled should work
up to a point, namely when Natural's representation finally
matters. And doesn't it matter now, in any case, when porting
(configuring)?

  reply	other threads:[~2014-05-27 15:45 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-20 18:32 Compilation error (GNAT bug?) Victor Porton
2014-05-20 18:43 ` Simon Wright
2014-05-20 22:22   ` spec/body/rep (Was: Compilation error (GNAT bug?)) Georg Bauhaus
2014-05-23 21:21     ` Randy Brukardt
2014-05-27  5:16       ` J-P. Rosen
2014-05-27  6:22         ` Niklas Holsti
2014-05-27  8:54           ` J-P. Rosen
2014-05-27  8:55           ` Dmitry A. Kazakov
2014-05-27 15:45             ` G.B. [this message]
2014-05-27 16:41               ` Dmitry A. Kazakov
2014-05-27 16:52                 ` G.B.
2014-05-27 17:03                   ` Dmitry A. Kazakov
2014-05-27 22:57               ` 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