From: "Norman H. Cohen" <ncohen@watson.ibm.com>
Subject: Re: Question about record rep spec placement
Date: 1997/01/15
Date: 1997-01-15T00:00:00+00:00 [thread overview]
Message-ID: <32DD307D.7208@watson.ibm.com> (raw)
In-Reply-To: 32DCFDAA.2656@lmtas.lmco.com
Ken Garlington wrote:
>
> We have some Ada83 code that looks like the following:
>
> package Some_Package is
>
> type Some_Record is record
> -- components here
> end record;
>
> -- some arbitrary declarations here
>
> private
>
> for Some_Record use record
> -- component rep spec here
> end record;
>
> end;
>
> Are there cases in Ada where a record representation specification
> cannot be deferred until the private part of the package? I'm told that
> when this code was compiled with an Ada 95 compiler, that the record
> rep spec had to be moved to immediately after the record declaration
> for the code to compile correctly. I'm wondering if this is
>
> (a) illegal Ada83 code that our Ada83 compiler accepted anyway
> (much like the use of unchecked_conversion on the left-hand side
> of an assignment statement, as described in another thread),
>
> (b) legal Ada code that the other Ada compiler rejected anyway, or
>
> (c) OUCH! Ada83 code that is no longer valid Ada.
The answer lies in those "arbitrary declarations". If those
declarations contain what is called a "forcing occurrence" in Ada 83,
such as a declaration of an object of type Some_Record, the record
representation clause is illegal. Essentially the same rules hold in
Ada 95, but with different terminology: The Ada-95 RM describes the
object declaration or whatever as "freezing" the representation of the
record type.
There are a few cases where the freezing rules make a legal Ada-83
program into an illegal Ada-95 program, but these cases are obscure and
pathological. For example, because of poor wording in the Ada-83
definition of "forcing occurrence",
subtype S is Integer range 0 .. Some_Record'Size;
was not a forcing occurrence in Ada 83, but this declaration does freeze
the representation of Some_Record in Ada 95.
--
Norman H. Cohen
mailto:ncohen@watson.ibm.com
http://www.research.ibm.com/people/n/ncohen
next prev parent reply other threads:[~1997-01-15 0:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-01-15 0:00 Question about record rep spec placement Ken Garlington
1997-01-15 0:00 ` Norman H. Cohen [this message]
1997-01-16 0:00 ` Ken Garlington
1997-01-17 0:00 ` Robert A Duff
1997-01-18 0:00 ` Ken Garlington
1997-01-15 0:00 ` Bob Gilbert
1997-01-16 0:00 ` Fergus Henderson
1997-01-17 0:00 ` Ken Garlington
1997-01-17 0:00 ` Bob Gilbert
1997-01-17 0:00 ` Robert A Duff
1997-01-17 0:00 ` Ken Garlington
1997-01-18 0:00 ` Robert A Duff
1997-01-18 0:00 ` Ken Garlington
1997-01-19 0:00 ` Robert A Duff
1997-01-21 0:00 ` Bob Gilbert
1997-01-22 0:00 ` Ken Garlington
1997-01-23 0:00 ` Art Schwarz
1997-01-25 0:00 ` Ken Garlington
1997-01-24 0:00 ` Bob Gilbert
1997-01-25 0:00 ` Ken Garlington
1997-01-20 0:00 ` Ken Garlington
1997-01-16 0:00 ` Jeff Creem
1997-01-16 0:00 ` Jerome Desquilbet
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox