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 2022/04/28 16:45:00 UTC
[jira] [Commented] (GROOVY-10605) Regression of method argument resolution with Groovy 4
[ https://issues.apache.org/jira/browse/GROOVY-10605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17529527#comment-17529527 ]
Eric Milles commented on GROOVY-10605:
--------------------------------------
"of" is declared on java.util.Map, correct? Static methods of interfaces must be accessed directly. There should be an STC error in 4.0.3 coming for this.
> Regression of method argument resolution with Groovy 4
> ------------------------------------------------------
>
> Key: GROOVY-10605
> URL: https://issues.apache.org/jira/browse/GROOVY-10605
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 4.0.2
> Reporter: Leonard Brünings
> Priority: Major
>
> {code:groovy}
> class Reproducer {
> public static final Map<Role, String> ROLE_MAPPING = EnumMap.of(Role.A, 'a')
> // public static final Map<Role, String> ROLE_MAPPING = EnumMap.of(Role.A, 'a', Role.B, 'b', Role.C, 'c', Role.D, 'd')
>
> static void main(String... args) {
> println ROLE_MAPPING
> }
> }
> enum Role {
> A, B, C, D
> }
> {code}
> ([Groovy Web Console|https://gwc-experiment.appspot.com/?g=groovy_4_0&codez=eJytj0EKgzAQRfc5xexUkHiBtmBbKYXaij1AiRolEKMksZvi3TumEdp9Z5Hh8Wfm_9SSGQMlH_XQTDXX8CKANU6VFDUYyyy2VigmIWfjphwkj-FutVDdDsrbJXvkaVGcryfYQqamHofo0IbLHE1jCFgQuYNJAn--G4ODPUK1wgGhXuGI0Hh793jX5yAa6JlQ4cePUgpMdybyf3c5UbBS_SRx4kxmQjgGch5-AwNhDDQ_Lip81Rs8JmML])
> Works fine in Groovy 2.5 and 3.x but fails with Groovy 4.
> {noformat}
> java.lang.ExceptionInInitializerError
> Caused by: groovy.lang.MissingMethodException: No signature of method: static java.util.EnumMap.of() is applicable for argument types: (Role, String) values: [A, a]
> Possible solutions: any(), sort(), is(java.lang.Object), notify(), wait(), size()
> at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1677)
> at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1663)
> at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
> at Reproducer.<clinit>(Script1.groovy:2)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ...
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)