You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2023/07/11 21:19:00 UTC

[jira] [Resolved] (GROOVY-2412) Need to access the metaClass of a subclass before receiving the dynamic methods that are added to the superclass

     [ https://issues.apache.org/jira/browse/GROOVY-2412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Milles resolved GROOVY-2412.
---------------------------------
    Resolution: Fixed

> Need to access the metaClass of a subclass before receiving the dynamic methods that are added to the superclass
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-2412
>                 URL: https://issues.apache.org/jira/browse/GROOVY-2412
>             Project: Groovy
>          Issue Type: Sub-task
>          Components: groovy-runtime
>    Affects Versions: 1.5
>         Environment: Groovy Version: 1.5.0 JVM: 1.6.0_03-b05
>            Reporter: René de Bloois
>            Priority: Major
>
> This script works:
> {code}
> class Super
> {
> 	def test2() { println "test2" }
> }
> Super.metaClass.test3 = { println "test3" }
> class Sub extends Super
> {
> 	def test4() { println "test4"; super.test3() }
> }
> Sub.metaClass // Does not work without this line
> new Super().test2()
> new Super().test3()
> new Sub().test2()
> new Sub().test3()
> new Sub().test4()
> {code}
> It outputs:
> {code}
> test2
> test3
> test2
> test3
> test4
> test3
> {code}
> But when I remove the commented line (Sub.metaClass), it does not work anymore. You get the following stacktrace:
> {code}
> test2
> test3
> test2
> Caught: groovy.lang.MissingMethodException: No signature of method: Sub.test3() is applicable for argument types: () values: {}
>         at Super.invokeMethod(test1.groovy)
>         at test1.run(test1.groovy:18)
>         at test1.main(test1.groovy)
> {code}
> I think that calling Sub.metaClass should not have such a sideeffect.
> The script should work with or without it.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)