From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=BAYES_00,FORGED_MUA_MOZILLA autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,45c6e2680274292d X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII Received: by 10.66.79.169 with SMTP id k9mr782922pax.18.1342730300125; Thu, 19 Jul 2012 13:38:20 -0700 (PDT) Path: p10ni8794460pbh.1!nntp.google.com!border1.nntp.dca.giganews.com!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!border3.nntp.dca.giganews.com!border-1.ams.xsnews.nl!border4.nntp.ams.giganews.com!border2.nntp.ams.giganews.com!border3.nntp.ams.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!ramfeed-2.ams.xsnews.nl!feed.xsnews.nl!border-2.ams.xsnews.nl!plix.pl!newsfeed2.plix.pl!news.mi.ras.ru!goblin-spool!goblin1!goblin.stu.neva.ru!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Labeled exit within generalized labeled loop not allowed? Date: Mon, 16 Jul 2012 13:33:47 +0300 Organization: Tidorum Ltd Message-ID: References: <5003dffc$0$291$14726298@news.sunsite.dk> Mime-Version: 1.0 X-Trace: individual.net MV06CD57M1iVqn5WHh/G+wrlmiLpK6B82AfJy8Qr8BVtjj8FDmU7tBfl0rAwSBFnn4 Cancel-Lock: sha1:/gMexGb85YbrO9J1bs8vq3sfhis= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: <5003dffc$0$291$14726298@news.sunsite.dk> X-Original-Bytes: 3177 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Date: 2012-07-16T13:33:47+03:00 List-Id: On 12-07-16 12:33 , Thomas L�cke wrote: > On 07/13/2012 06:19 PM, Marc C wrote: >> 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? > > > Hmm, it appears we're the only people who experience this, or perhaps > the only people who care? :D My guess is a compiler bug, not discovered earlier because the labeled exit statements are rare, and users of Ada 2012 also (so far). > I would've thought that labeled exits were something that were widely > used. A data point on this: I scanned an Ada 2005 project of mine. It has 893 loops but only 35 labeled exit statements. These are always on large, complex loops, sometimes nested loops where the exit leaves the outermost loop from an innner loop. When these loops are traversing a data structure, the structure is usually dynamic (e.g. a work-list) that can shrink and grow during the execution of the loop. This project has many loop exits from small traversal loops of fixed data structures. These loops could use the generalized loop syntax, but the loops are small and usually not nested, so they are not named. To me, the generalized loop syntax suggests that the loop should be executed for all the elements in the container, that the amount of data in the container does not change during the loop, and that the traversal order is not important. I know that the order is defined; I am talking about my impression while reading the program. I'm not sure if data can be added to or removed from a container during a generalized iteration over the container; would that be "tampering"? -- Niklas Holsti Tidorum Ltd niklas holsti tidorum fi . @ .