- 
                Notifications
    You must be signed in to change notification settings 
- Fork 1.1k
Closed
Closed
Copy link
Labels
area:annotationsitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore
Milestone
Description
Compiler version
3.1.3+
(3.1.2 is the last version where the implicitNotFound is not ignored)
Minimized code
import scala.annotation.implicitNotFound
import scala.compiletime.testing.*
@implicitNotFound("Can you see me?!")
trait Compare[A, B]
object minimunit {
  def assertEquals[A, B](
    a: A,
    b: B,
    // The presence of the below default argument prevents the `implicitNotFound` message from appearing
    // in the error output of `typeCheckErrors` in Scala +3.1.3
    clue: => Any = "values are not the same"
  )(implicit comp: Compare[A, B]): Unit = ()
  transparent inline def compileErrors(inline code: String): List[Error] =
    typeCheckErrors(code)
}
object example extends App {
  val errors = minimunit.compileErrors("minimunit.assertEquals(true, 1)")
  println(errors)
}Output
Scala 3.1.3
scala-cli run --scala-version 3.1.3 minimunit.scala
List(Error(missing argument for parameter comp of method assertEquals in object minimunit: (implicit comp: Compare[Boolean, Int]): Unit,minimunit.assertEquals(true, 1),22,Typer))
Scala 3.1.2
scala-cli run --scala-version 3.1.2 minimunit.scala
List(Error(Can you see me?!,minimunit.assertEquals(true, 1),31,Typer))
Expectation
The implicitNotFound message should appear whether or not there is a default argument involved.
If we remove the clue: => Any = "values are not the same" line, the implicitNotFound message is again returned on Scala versions greater than 3.1.2
I encountered this issue when trying to upgrade munit to Scala 3.3.1
scalameta/munit#733
Metadata
Metadata
Assignees
Labels
area:annotationsitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore