Labeled exit within generalized labeled loop not allowed?
- From: Marc C <mc.provisional@xxxxxxxxx>
- Date: Fri, 13 Jul 2012 09:19:37 -0700 (PDT)
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;
.
- Follow-Ups:
- Re: Labeled exit within generalized labeled loop not allowed?
- From: Thomas Løcke
- Re: Labeled exit within generalized labeled loop not allowed?
- From: Thomas Løcke
- Re: Labeled exit within generalized labeled loop not allowed?
- Prev by Date: Re: How to initialize a matrix of one column only?
- Next by Date: Re: so talk to me about aws: anyone got a site? any e commerce? fun?
- Previous by thread: ANN: Ada 2005 Math Extensions 20120712
- Next by thread: Re: Labeled exit within generalized labeled loop not allowed?
- Index(es):
Relevant Pages
|