comp.lang.ada
 help / color / mirror / Atom feed
From: Marc C <mc.provisional@gmail.com>
Subject: Labeled exit within generalized labeled loop not allowed?
Date: Fri, 13 Jul 2012 09:19:37 -0700 (PDT)
Date: 2012-07-13T09:19:37-07:00	[thread overview]
Message-ID: <d42dbe56-a2ac-4898-96a8-372292b19e38@googlegroups.com> (raw)

I find it hard to believe that this would be a GNAT GPL 2012 compiler bug, but I don't see anything in the LRM that indicates this wouldn't be legal.

Code containing a labeled generalized loop (the "for Elem of Some_Container" type), with a conditional exit referencing the loop label, fails to compile with an "Invalid loop name in exit statement" error.

What's the rationale for this? Or a consequence of what? Or is it a compiler bug?

Marc A. Criley

Here's an example:

with Text_IO; use Text_IO;

procedure Loop_Check is

   type Int_Array_Type is array (1..10) of Integer;
   
   IA : Int_Array_Type := (6 => 6, others => 3);
   
begin
   Loop_A: For I in IA'range loop
      Put_Line(Integer'Image(IA(I)));
      exit Loop_A When IA(I) = 6;
   end loop Loop_A;
   
   Loop_B: For I of IA loop
      Put_Line(Integer'Image(I));
      exit when I = 6;
   end loop Loop_B;
   
   Loop_C: For I of IA loop
      Put_Line(Integer'Image(I));
      exit Loop_C when I = 6; -- Compiler error on this line
   end loop Loop_C;
end Loop_Check;



             reply	other threads:[~2012-07-13 16:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-13 16:19 Marc C [this message]
2012-07-13 17:21 ` Labeled exit within generalized labeled loop not allowed? Thomas Løcke
2012-07-16  9:33 ` Thomas Løcke
2012-07-16 10:33   ` Niklas Holsti
2012-07-16 12:03     ` Niklas Holsti
2012-07-16 12:29       ` Thomas Løcke
2012-07-16 15:24         ` Marc C
2012-07-17  6:01           ` Thomas Løcke
2012-07-19  6:41       ` 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