You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Daniel Sun (JIRA)" <ji...@apache.org> on 2019/07/04 23:30:00 UTC
[jira] [Resolved] (GROOVY-9168) Default Arguments: non-static inner
class constructor call in default value not supported
[ https://issues.apache.org/jira/browse/GROOVY-9168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Sun resolved GROOVY-9168.
--------------------------------
Resolution: Fixed
Assignee: Daniel Sun
Fix Version/s: 3.0.0-beta-2
The proposed PR was merged. Thanks!
> Default Arguments: non-static inner class constructor call in default value not supported
> -----------------------------------------------------------------------------------------
>
> Key: GROOVY-9168
> URL: https://issues.apache.org/jira/browse/GROOVY-9168
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 3.0.0-beta-1, 2.5.7
> Reporter: Eric Milles
> Assignee: Daniel Sun
> Priority: Major
> Fix For: 3.0.0-beta-2
>
>
> This is a variation of GROOVY-6777, GROOVY-6809 and GROOVY-7609. A constructor's parameter may not presently be defaulted by a value expression using a non-static inner class (including anon. inner). This is likely caused by the uninitialized "this" reference that is supplied to the constructor of the non-static inner class.
> {code:groovy}
> // Error: Apparent variable 'this' was found in a static scope but doesn't refer to a local variable, static field or class.
> class Outer {
> class Inner {} // make this static and all is well
> Outer(Inner inner = new Inner()) {
> }
> }
> new Outer()
> {code}
> {code:groovy}
> class C {
> C(Runnable runner = new Runnable() { void run() {} }) {
> // ^^^^^^^^^^^^^^ enclosing method not set and ...
> this.runner = runner
> }
> Runnable runner
> }
> new C().runner.run()
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)