You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2026/10/20 01:28:02 UTC
[jira] [Closed] (GROOVY-7617) Label is leaking scope when applied to a statement other than a block statement
[ https://issues.apache.org/jira/browse/GROOVY-7617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-7617.
-----------------------------
> Label is leaking scope when applied to a statement other than a block statement
> -------------------------------------------------------------------------------
>
> Key: GROOVY-7617
> URL: https://issues.apache.org/jira/browse/GROOVY-7617
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 2.4.5
> Reporter: Will McQueen
> Assignee: Eric Milles
> Priority: Major
> Labels: break, continue
> Fix For: 6.0.0-alpha-1
>
>
> In Groovy, the scope of a labelled statement seems to be leaking so that break statements occurring outside the labelled statement are still valid and in scope for that label. This issue is reproducible only when the labelled statement is not a block (eg, when it's not something like.... *mylabel:\{...\}* ).
> For example...
> Groovy code is shown below. The issue here is that this code compiles and causes infinite output because the 2nd reference of mylabel is in scope when it shouldn't be.
> {code}
> mylabel: for (x in [1,2]) {
> println "first"
> break mylabel
> }
> for (x in [3,4]) {
> println "second"
> break mylabel //2nd reference of mylabel
> }
> {code}
> {panel}
> Output:
> first
> second
> second
> second
> second
> second
> ...
> {panel}
> Java code is shown below. As expected, this won't compile because the 2nd reference to 'mylabel' is out of scope:
> {code}
> mylabel: for (int x : Arrays.asList(1,2)) {
> System.out.println("first");
> break mylabel;
> }
> for (int x : Arrays.asList(3,4)) {
> System.out.println("second");
> break mylabel; //won't compile: "Undefined label: 'mylabel'"
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)