Closed
Description
Compiler version
3.0.1-RC1-bin-20210402-775d881-NIGHTLY
Minimized code
final class UnivEq[A]
object UnivEq:
erased def force[A]: UnivEq[A] =
compiletime.erasedValue
extension [A](a: A)
inline def ==*[B >: A](b: B)(using erased UnivEq[B]): Boolean = a == b
inline def !=*[B >: A](b: B)(using erased UnivEq[B]): Boolean = a != b
case class I(i: Int)
@main def main = {
def test[A](a: A, b: A): Unit = {
erased given UnivEq[A] = UnivEq.force[A]
assert(a ==* a)
assert(a !=* b)
}
println("Test starting...")
test(I(1), I(2)) // error
test(1, 2)
test(true, false)
}
Output
> sbt run
[info] compiling 1 Scala source to ~/scala3bug/sbt/target/scala-3.0.1-RC1/classes ...
[info] done compiling
[info] running main
Test starting...
[error] (run-main-c) scala.NotImplementedError: an implementation is missing
[error] scala.NotImplementedError: an implementation is missing
[error] at scala.Predef$.$qmark$qmark$qmark(Predef.scala:345)
[error] at BUG$package$.test$1(BUG.scala:16)
[error] at BUG$package$.main(BUG.scala:20)
[error] at main.main(BUG.scala:13)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error] stack trace is suppressed; run last Compile / bgRun for the full output
[error] Nonzero exit code: 1
[error] (Compile / run) Nonzero exit code: 1
[error] Total time: 0 s, completed 6 Apr. 2021, 12:04:35 pm
Expectation
No runtime exception should be thrown. The compiler has inserted a ???
somewhere.