-
Notifications
You must be signed in to change notification settings - Fork 21
Closed
scala/scala
#8037Milestone
Description
Not sure if the title correctly summarizes the problem, but the following compiled with 2.13.0-M5, but not on RC1:
Scala:
trait SuiteMixin { this: Suite =>
def rerunner: Option[String]
}
trait Suite {
def rerunner: Option[String] = ???
}
abstract class JournalSpec extends Suite with SuiteMixin
Java:
class MyJournalSpecTest extends JournalSpec {
}
Compiler error:
[error] /home/aengelen/dev/scala-2.13-repro/src/main/java/MyJournalSpecTest.java:1:1: MyJournalSpecTest is not abstract and does not override abstract method rerunner() in SuiteMixin
[error] class MyJournalSpecTest extends JournalSpec {
[error] (Compile / compileIncremental) javac returned non-zero exit code
Looking at the generated classes, Suite
and SuiteMixin
are the same between M5 and RC1:
Compiled from "Suite.scala"
public interface Suite {
public static scala.Option rerunner$(Suite);
public scala.Option<java.lang.String> rerunner();
public static void $init$(Suite);
}
Compiled from "SuiteMixin.scala"
public interface SuiteMixin {
public abstract scala.Option<java.lang.String> rerunner();
}
But JournalSpec
is different: on RC1 it is missing the <java.lang.String>
generic on the rerunner
return type:
javap ./target/scala-2.13.0-RC1/classes/JournalSpec.class
Compiled from "JournalSpec.scala"
public abstract class JournalSpec implements Suite,SuiteMixin {
public scala.Option rerunner();
public JournalSpec();
}
javap ./target/scala-2.13.0-M5/classes/JournalSpec.class
Compiled from "JournalSpec.scala"
public abstract class JournalSpec implements Suite,SuiteMixin {
public scala.Option<java.lang.String> rerunner();
public JournalSpec();
}