comp.lang.ada
 help / color / mirror / Atom feed
From: murali@saifr00.cfsat.honeywell.com (R. Muralidhar)
Subject: Type conversion from Universal Integer
Date: Wed, 3 Mar 93 22:48:45 GMT
Date: 1993-03-03T22:48:45+00:00	[thread overview]
Message-ID: <1993Mar3.224845.18874@saifr00.cfsat.honeywell.com> (raw)


Hi,

I have the following piece of code

 -------------------------------------------------------------------------
package P is
  type A is range 1 .. 10;

  type Array_Constrained_Type is array ( A range <> ) of Integer;
end P;

with P;
procedure test is 

 Const : constant := 5;
 type Local_A is range 1 .. 10;

 type Local_Array_Constrained_Type is array ( Local_A range <> ) of Integer;

 subtype Array_type1 is P.Array_Constrained_Type(1 .. (const/2)); -- Line A
 subtype Array_type2 is P.Array_Constrained_Type(1 .. P."/"(const,2)); -- Line B
 subtype Array_type3 is Local_Array_Constrained_Type(1 .. (const/2)); -- Line C

begin
  null;
end test;
 -------------------------------------------------------------------------

 detect an error on DEC Ada compiler, in the line marked "Line A", saying:

%ADAC-E-RESTYPINCON, (1) Result type of expression is inconsistent with its  
        context, which requires integer type A in P at line 2 [LRM 8.7] 

But the same piece of code compiled fine under Verdix Ada Compiler on Sun.

Line B compiled fine in both compilers, so did Line C.

Am I dealing here with some interpretation of a language feature that is
implementation dependent? Or is it that one or the other compiler is wrong?


Also, LRM 4.6(15) says that "An implicit conversion of an operand of
universal integer to another integer type, ..., can only be applied if the
operand is either a numeric literal, a named number, or an attribute;"

I take it that the compiler tries to implicitly convert to the integer type A,
the upper and lower bounds of the specified ranges in all three lines, 
Line A, Line B, and Line C. Since (const/2) is an expression and is not a
numeric literal, not a named number, and not an attribute, the compiler(s)
should have detected errors in all three lines.

Any help in explaining this situation will be greatly appreciated.

Thanks in advance.


                 _
  /|/), , ;_ _  // .
(/  /(_<_/ '(_(_X_<_
murali@saifr00.cfsat.honeywell.com

Muralidhar Rajappa
Honeywell Commercial Flight Systems Group
Phoenix AZ
-- 
                 _
  /|/), , ;_ _  // .
(/  /(_<_/ '(_(_X_<_
murali@saifr00.cfsat.honeywell.com



             reply	other threads:[~1993-03-03 22:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-03-03 22:48 R. Muralidhar [this message]
1993-03-04 13:12 ` Type conversion from Universal Integer Dave Collard x7468
replies disabled

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