-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
area:default-parametersitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore
Description
Compiler version
3.7.0-3.7.3, 3.8.0-RC1-bin-20250819-1f13619-NIGHTLY
(Compiles on 3.6.4)
Minimized code
trait Typeclass[I]
sealed trait Enumm {
type Insider
}
object Enumm {
case object Enumm1 extends Enumm {
case class Insider()
object Insider {
given t: Typeclass[Insider] = new Typeclass[Insider] {}
}
}
}
class Foo
implicit val f: Foo = new Foo
def pathDependentTypeDefaultParam(tpe: Enumm)(i: tpe.Insider, p: Int = 0)(using t: Typeclass[tpe.Insider]): Int = p
def defaultParamNotPDT(tpe: Enumm)(i: tpe.Insider, p: Int = 0)(using t:Foo): Int = p
def pathDependentTypeDefaultParamOwnList(tpe: Enumm)(i: tpe.Insider)(p: Int = 0)(using t: Typeclass[tpe.Insider]): Int = p
def main = {
//doesn't compile
//Error: No given instance of type Nothing & Typeclass[? <: Enumm.Enumm1#Insider] was found for parameter t of method foo
pathDependentTypeDefaultParam(Enumm.Enumm1)(Enumm.Enumm1.Insider())
//compiles if default arg given explicitly
pathDependentTypeDefaultParam(Enumm.Enumm1)(Enumm.Enumm1.Insider(), p = 0)
//compiles if using non-path-dependent given
defaultParamNotPDT(Enumm.Enumm1)(Enumm.Enumm1.Insider())
//with default args in own parameter list again doesn't compile
//Error: No given instance of type Nothing & Typeclass[? <: Enumm.Enumm1#Insider] was found for parameter t of method foo3
pathDependentTypeDefaultParamOwnList(Enumm.Enumm1)(Enumm.Enumm1.Insider())()
//again, compiles if default arg given explicitly
pathDependentTypeDefaultParamOwnList(Enumm.Enumm1)(Enumm.Enumm1.Insider())(p = 0)
}
Output
[error] -- [E172] Type Error: /Users/jackwheatley/work/37test/src/main/scala/main.scala:29:69
[error] 29 | pathDependentTypeDefaultParam(Enumm.Enumm1)(Enumm.Enumm1.Insider())
[error] | ^
[error] |No given instance of type Nothing & Typeclass[? <: Enumm.Enumm1#Insider] was found for parameter t of method pathDependentTypeDefaultParam
[error] -- [E172] Type Error: /Users/jackwheatley/work/37test/src/main/scala/main.scala:39:78
[error] 39 | pathDependentTypeDefaultParamOwnList(Enumm.Enumm1)(Enumm.Enumm1.Insider())()
[error] | ^
[error] |No given instance of type Nothing & Typeclass[? <: Enumm.Enumm1#Insider] was found for parameter t of method pathDependentTypeDefaultParamOwnList
[error] two errors found
Expectation
The above code compiles in 3.6.4. Default arguments shouldn't affect implicit resolution.
jdrphillips
Metadata
Metadata
Assignees
Labels
area:default-parametersitype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore