comp.lang.ada
 help / color / mirror / Atom feed
From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: ObjectAda vs Gnat -- bugs
Date: 1997/05/16
Date: 1997-05-16T00:00:00+00:00	[thread overview]
Message-ID: <EAA25I.9nn.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 337B65FC.98D@gsfc.nasa.gov


Stephen Leake (Stephen.Leake@gsfc.nasa.gov) wrote:

: granger wrote:
: > 
: > Here is a shortened version of a package that I wrote.
: > 
: > It compiles without any error with ObjectAda.
: > With gnat3.09, I have the following errors:
: > 
: > rgbcolor.ads:18:41: expect object name in renaming
: > rgbcolor.ads:19:49: expect object name in renaming
: > 
: > Which of the compilers is correct ?

: gnat; see below

Actually, Gnat is wrong and Object Ada is correct ;-).  In Ada 95,
the result of calling a function is a constant object (per RM95 3.3(10,21)), 
and it may be renamed (8.5.1(4)).  This fact is mentioned in AARM 3.3(26.b).

: > package rgbcolor is
: >         package RGB_Value is
: >                 type Color3  is
: >                 record
: >                         red, green, blue : Float;
: >                 end record;
: >                 Gray0   : constant Color3 := ( 0.000, 0.000, 0.000 );
: >                 Grey0   : Color3 renames Gray0;
: >                 Gray1   : constant Color3 := ( 0.012, 0.012, 0.012 );
: >                 Grey1   : Color3 renames Gray1;
: >         end RGB_Value;
: > 
: >         type Color_Type is ( Gray0, Gray1 );
: > 
: >         subtype Grey_Color_Type is Color_Type range Gray0 .. Gray1;
: > 
: >         Grey0   : Color_Type renames    Gray0;  -- line in error---------------
: >         Grey1   : Color_Type renames    Gray1;  -- line in error---------------

: replace the error lines with:

:         function Grey0 return Color_Type renames Gray0;
:         function Grey1 return Color_Type renames Gray1;

This will also work, but it is not required in Ada 95.

One advantage of this approach is that these new declarations
are parameterless functions, which allows them to be overloaded
and inherited by derived type.

: > end rgbcolor;

: An enumeration literal acts like a function with no parameters, so you
: can rename it as a function. Your original renaming was trying to
: declare an object, which GNAT correctly forbids; submit an error report
: to Aonix!

No, don't bother.  GNAT should interpret the renaming as a renaming
of the result of calling the parameterless "function."

: However, if you are expecting rbbcolor.Grey0 to return the same value as
: rgbcolor.RBG_Value.Grey0, you are confused; one is a scalar enumeration
: type, the other is a record type with three components. You could add
: the declarations:

:         Grey0 : RGB_Value.Color3 renames RGB_Value.Gray0;
:         Grey1 : RGB_Value.Color3 renames RGB_Value.Gray1;

: But I'm not clear what you are after.

: -- 
: - Stephe

--
-Tucker Taft   stt@inmet.com   http://www.inmet.com/~stt/
Intermetrics, Inc.  Burlington, MA  USA




  parent reply	other threads:[~1997-05-16  0:00 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-05-15  0:00 ObjectAda vs Gnat -- bugs granger
1997-05-15  0:00 ` Stephen Leake
1997-05-16  0:00   ` Jon S Anthony
1997-05-16  0:00   ` Tucker Taft [this message]
1997-05-16  0:00     ` Jon S Anthony
1997-05-16  0:00       ` Tom Moran
1997-05-16  0:00       ` Robert Dewar
1997-05-17  0:00         ` Jon S Anthony
1997-05-15  0:00 ` Robert Dewar
1997-05-16  0:00   ` David L Brown
1997-05-16  0:00     ` Robert Dewar
1997-05-17  0:00       ` Tom Moran
1997-05-18  0:00         ` Jon S Anthony
1997-05-19  0:00         ` Tucker Taft
1997-05-19  0:00       ` Tom Moran
1997-05-15  0:00 ` Samuel A. Mize
1997-05-15  0:00 ` Samuel A. Mize
1997-05-16  0:00 ` Robert A Duff
1997-05-16  0:00   ` Robert Dewar
  -- strict thread matches above, loose matches on Subject: below --
1997-05-16  0:00 Keith Thompson
1997-05-16  0:00 ` Robert A Duff
1997-05-16  0:00   ` Robert Dewar
1997-05-18  0:00     ` Nick Roberts
1997-05-19  0:00       ` Robert Dewar
1997-05-20  0:00         ` Nick Roberts
1997-05-21  0:00           ` Robert Dewar
1997-05-23  0:00   ` Stephen Leake
1997-05-24  0:00     ` Robert A Duff
1997-05-28  0:00       ` Stephen Leake
1997-05-30  0:00         ` Samuel Mize
1997-05-30  0:00         ` Robert A Duff
1997-05-30  0:00           ` Matthew Heaney
1997-05-31  0:00             ` Robert A Duff
1997-05-19  0:00 tmoran
1997-05-19  0:00 ` Jon S Anthony
1997-05-20  0:00   ` Jeff Carter
1997-05-20  0:00   ` Nick Roberts
1997-05-25  0:00     ` Tom Moran
1997-05-30  0:00 John Walker
replies disabled

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