Closed
Description
See that the previous issue is back: scala/bug#8778
Compiler version
3.1.2-RC1-bin-20211222-c94b333-NIGHTLY
Minimized code
import javax.inject.Qualifier;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface NamedDatabase {
String value();
}
import java.io.Serializable
final class NamedDatabaseImpl(val value: String)
extends NamedDatabase(value)
with Serializable {
assert(value != null)
override def hashCode: Int = (127 * "value".hashCode()) ^ value.hashCode()
override def equals(that: Any): Boolean = that match {
case other: NamedDatabase =>
other.value == this.value
case _ =>
false
}
override def toString: String =
s"@${classOf[NamedDatabase].getName}(value=${value})"
def annotationType = classOf[NamedDatabase]
}
Output
When try to use it with Guice, fails with a IncompatibleClassChangeError
[error] java.lang.IncompatibleClassChangeError: play/modules/reactivemongo/NamedDatabaseImpl (ReactiveMongoModule.scala:48
[error] play.modules.reactivemongo.ReactiveMongoModule$.key(ReactiveMongoModule.scala:48)
[error] play.modules.reactivemongo.ReactiveMongoModule.apiBindings$$anonfun$1(ReactiveMongoModule.scala:36)
[error] play.modules.reactivemongo.ReactiveMongoModule$$Lambda$12039/1390106650.apply(Unknown Source)
[error] play.modules.reactivemongo.ReactiveMongoModule.apiBindings(ReactiveMongoModule.scala:41)
[error] play.modules.reactivemongo.ReactiveMongoModule.bindings(ReactiveMongoModule.scala:24)
[error] play.modules.reactivemongo.ReactiveMongoModule.bindings(ReactiveMongoModule.scala:17)
[error] play.api.inject.guice.GuiceableModuleConversions.guice(GuiceInjectorBuilder.scala:365)
[error] play.api.inject.guice.GuiceableModuleConversions.guice$(GuiceInjectorBuilder.scala:364)
[error] play.api.inject.guice.GuiceableModule$.guice(GuiceInjectorBuilder.scala:297)