-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
area:lintingLinting warnings enabled with -W or -XlintLinting warnings enabled with -W or -Xlintitype:bug
Milestone
Description
Compiler version
3.7.0-RC1-bin-20250228-e592b37-NIGHTLY
Minimized code
object Native {
class Obj:
def f: String = "F"
}
object Types {
opaque type Node = Native.Obj
type S = Node
object S:
def apply(): S = new Node
extension (s: S)
def f: String = "S"
}
import Types.*
object Main {
def main(args: Array[String]): Unit = {
val v: S = S()
println(v.f)
}
}
Output
Extension method f will never be selected from type Node
because Node already has a member with the same name and compatible parameter types.
def f: String = "S"
Expectation
The warning is wrong, the method is in fact used, as evidenced by the output of the program, which is S, not F. Moreover, the method f
of the type Node
cannot be used, as it is hidden inside an opaque type
.
Metadata
Metadata
Assignees
Labels
area:lintingLinting warnings enabled with -W or -XlintLinting warnings enabled with -W or -Xlintitype:bug