Hi all,

I have build an hierarchy that effectively looks like:

   Abstract Base #1 (Java)
                ^
                |
   Abstract Base #2 (Groovy, CompileStatic)
                ^
                |
   Abstract Base #3 (Groovy, CompileStatic)
                ^
                |
   Abstract Base #4 (Groovy, CompileStatic) <- Implements methodA from
   Abstract Base #1
        ^                ^                 ^
        |                |                 |
   ExampleG (Groovy)    ExampleJ (Java)   ExampleK (Kotlin)

Finally there are three examples - one each in  Groovy, Java and otlin example. They extend #4 with concrete classes. The Groovy and Kotlin examples compile fine, but the Java complains that methodA is not implemented. The real signature of methodA is actually

   SeekableByteChannel newByteChannel(Path path, Set<? extends
   OpenOption> options, FileAttribute<?>[] attrs) throws IOException

This could be down to what the Groovy compiler (2.4.11) has done with the generics, but it has me me confused. I am even more surprised that only the Java compiler complains and not the Kotlin compiler.  In IntelliJ this is not flagged up as an issue either. It only occurs when compiling the project with Gradle.

I know my example is slightly vague, but it removes all of the noise. The actual code of the offending class is here -> https://gitlab.com/ysb33rOrg/java-nio2-providers/blob/development/commons-compress-provider-core/src/test/java/org/ysb33r/nio/provider/commons_core/examples/java/GzFileSystemProvider.java

Now I'm hoping if anyone has seen issues like this before or have an idea where I can start diagnosing it.

--
Schalk W. Cronjé
Twitter / Ello / Toeter : @ysb33r

Reply via email to