Skip to content

Commit d9150aa

Browse files
authored
Merge pull request scala#5828 from adriaanm/userdefined-apply-352
`CompleterWrapper` delegates `typeParams`.
2 parents 94dd1dc + b722e61 commit d9150aa

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/compiler/scala/tools/nsc/typechecker/Namers.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,9 @@ trait Namers extends MethodSynthesis {
611611
}
612612

613613
class CompleterWrapper(completer: TypeCompleter) extends TypeCompleter {
614+
// override important when completer.isInstanceOf[PolyTypeCompleter]!
615+
override val typeParams = completer.typeParams
616+
614617
val tree = completer.tree
615618

616619
override def complete(sym: Symbol): Unit = {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
object Foo {
2+
// spurious error if:
3+
// - this definition precedes that of apply (which is overloaded with the synthetic one derived from the case class)
4+
// - AND `Foo.apply` is explicitly applied to `[A]` (no error if `[A]` is inferred)
5+
//
6+
def referToPolyOverloadedApply[A]: Foo[A] = Foo.apply[A]("bla")
7+
// ^
8+
// found : String("bla")
9+
// required: Int
10+
11+
def apply[A](x: Int): Foo[A] = ???
12+
}
13+
case class Foo[A](x: String) // must be polymorphic

0 commit comments

Comments
 (0)