You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Joseph Price (Jira)" <ji...@apache.org> on 2021/12/08 04:23:00 UTC

[jira] [Created] (GROOVY-10407) unchecked method invocation warning in generated stubs

Joseph Price created GROOVY-10407:
-------------------------------------

             Summary:  unchecked method invocation warning in generated stubs 
                 Key: GROOVY-10407
                 URL: https://issues.apache.org/jira/browse/GROOVY-10407
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 3.0.9
            Reporter: Joseph Price


 

When calling a groovy class from java that takes a Map in the constructor, the generated stubs have what looks to be a second constructor that takes a null for the parameter, that casted to a raw Map. Since this happens in generated code not under my control, this prevents enabling -Werror across the project. Providing type arguments for the map or leaving the cast off would fix the warning, but I also wonder if suppressing the constructor is possible.

Below are the commands I ran, along with the contents of the java and groovy files:
{code:java}
groovyc -j  -FWerror -FXlint:unchecked Test.java Base.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Compile error during compilation with javac.
/var/folders/mm/8s324dkd6sb1ktx0g48pbvhc0000gq/T/groovy-generated--java-source3303303787390544788/Base.java:13: warning: [unchecked] unchecked method invocation: constructor <init> in class Parent is applied to given types
super ((java.util.Map)null);
      ^
  required: Map<String,String>
  found: Map
/var/folders/mm/8s324dkd6sb1ktx0g48pbvhc0000gq/T/groovy-generated--java-source3303303787390544788/Base.java:13: warning: [unchecked] unchecked conversion
super ((java.util.Map)null);
       ^
  required: Map<String,String>
  found:    Map
error: warnings found and -Werror specified
1 error
2 warnings                                                                      {code}
 
{code:java}
cat -p Base.groovy

class Parent {
  Parent(Map<String, String> map) {
  }
}

class Base extends Parent {
  Base(Map<String, String> map) {
    super(map);
  }
}                                                                               

cat -p Test.java

import java.util.Map;
class Test {
  Base b = new Base(Map.of());
} {code}
 

 

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)