Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.3.3, 2.3.4, 2.3.5, 2.3.6, 2.4.1
-
None
-
None
-
Oracle JDK 1.7.0_60 @ Mavericks
Description
Since Groovy 2.3.3 initializing a field of an anonymous class with an enclosing argument results in a MissingPropertyException:
Code:
class MissingPropertyExceptionBug { interface SomeType { } static main(args) { new SomeType() { def arguments = args } } }
...results in:
Exception in thread "main" groovy.lang.MissingPropertyException: No such property: args for class: MissingPropertyExceptionBug at groovy.lang.MetaClassImpl.invokeStaticMissingProperty(MetaClassImpl.java:996) at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1851) at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1827) at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3690) at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:171) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:452) at MissingPropertyExceptionBug$1.propertyMissing(MissingPropertyExceptionBug.groovy) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaClassImpl.invokeMissingProperty(MetaClassImpl.java:874) at groovy.lang.MetaClassImpl$12.getProperty(MetaClassImpl.java:2018) at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:82) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231) at MissingPropertyExceptionBug$1.<init>(MissingPropertyExceptionBug.groovy) at MissingPropertyExceptionBug.main(MissingPropertyExceptionBug.groovy:7) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Workaround:
Use a top-level class instead.
Attachments
Attachments
Issue Links
- links to