TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy

TEAM-ADA@LISTSERV.ACM.ORG

Options: Use Classic View

Use Monospaced Font
Show HTML Part by Default
Condense Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Mime-Version: 1.0
Sender: "Team Ada: Ada Advocacy Issues (83 & 95)" <[log in to unmask]>
From: Craig Carey <[log in to unmask]>
Date: Thu, 17 Jul 2003 03:13:14 +1200
In-Reply-To: <002801c347ee$c1af8540$4b212b52@bram1>
Content-Type: text/plain; charset="us-ascii"
Reply-To: Craig Carey <[log in to unmask]>
Parts/Attachments: text/plain (52 lines)
At 2003-07-11 21:55 +0100 Friday, Nick Roberts wrote:
>At 2003-07-08 11:14 +0530 Tuesday, Apurva Shukla wrote:
>> I am a starter in Ada and need certain help regarding arrays. I
>> have got a code in which there is a line which says:
>>
>> a(11..10) := b(1..0);
>>
...
>occurs that, for a (well-designed) generic unit, there will be certain
>(valid and meaningful) instantiations that cause such 'null assignments'.


When null arrays, then an error is raised on a mismatching lengths, by
AARM 4.6(37), which says:

| If the target subtype is a constrained array subtype, then a check is
| made that the length of each dimension of the value of the operand
| equals the length of the corresponding dimension of the target subtype.
| The bounds of the result are those of the target subtype.

--------

There is something unsatisfactory with the handling of empty strings.

In general, the upper and lower bound of a string can be negative.
An incorrect type of coding is to use Natural for the lower bound of a
string.

procedure A is

   procedure P (Str : String) is
      Low   : constant Positive := Str'First;   --  <- Constraint_Error here
--    High  : constant Natural := Str'Last;
   begin
      null;
   end P;

   S  : String := (4 .. 8 => ' ');
   T  : constant String := S (-9 .. -10);   --  <- Want sliding to (1..0) ?

begin                                       --  T'First = -9,  T'Last = -10
-- P (Str => S (-9 .. -10));
   P (Str => T);
end A;


Is that a significant defect?.
There could be automatic sliding for null strings.


Craig Carey

ATOM RSS1 RSS2