Error compiling with JDK11 when a case class does not have its companion object
julianmendez opened this issue · comments
problem
If a case class does not have a companion object, the following error message appears:
error: illegal combination of modifiers: abstract and static
[ERROR] static public abstract R apply () ;
[ERROR] ^
In JDK 8 using abstract and static is considered a warning. In JDK 11 this is an error.
expectation
A case class can be used without needing a companion object.
reproduction
To reproduce this issue, it is enough to create a file containing:
case class MyCaseClass() {}
However, the following does not have any problems:
case class MyCaseClass() {}
object MyCaseClass {}
In the generated Java code, one can see the difference. In the first case we see:
public class MyCaseClass implements scala.Product, java.io.Serializable {
static public abstract R apply () ;
static public java.lang.String toString () { throw new RuntimeException(); }
public MyCaseClass () { throw new RuntimeException(); }
}
In the second case we see:
public class MyCaseClass implements scala.Product, java.io.Serializable {
public MyCaseClass () { throw new RuntimeException(); }
}
configuration
This was compiled with:
- genjavadoc 0.15
- org.scala-tools.maven-scala-plugin 2.15.2
- net.alchim31.maven.scala-maven-plugin 4.3.0
- org.apache.maven.plugins.maven-javadoc-plugin 3.1.1
- org.apache.maven.plugins.maven-compiler-plugin 3.8.1
- Apache Maven 3.6.0
- Java 11.0.5
- Scala 2.13.1