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 2025/06/04 14:46:00 UTC
[jira] [Closed] (GROOVY-4721) variable declared in try block is in scope in finally block
[ https://issues.apache.org/jira/browse/GROOVY-4721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-4721.
-----------------------------
> variable declared in try block is in scope in finally block
> -----------------------------------------------------------
>
> Key: GROOVY-4721
> URL: https://issues.apache.org/jira/browse/GROOVY-4721
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 2.4.0-rc-1
> Reporter: Hamlet D'Arcy
> Assignee: Daniel Sun
> Priority: Major
> Fix For: 5.0.0-beta-1
>
>
> This code should fail because 'x' is out of scope in the finally block.
> {code}
> class MyClass {
> def myMethod() {
> try {
> def x = 'foo'
> println x
> }
> finally {
> println x
> }
> }
> }
> new MyClass().myMethod()
> {code}
> Instead it prints 'foo' twice.
> if myMethod is static then it shows the behavior I expect.
> Could be something wrong with VariableScope somewhere?
> This example is from the Groovy codebase. We have code that relies on this behavior (although it is easy to find and fix, just run the UnusedVariable codenarc inspection, which is how I found it)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)