File: userdefined_apply_poly_overload.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (13 lines) | stat: -rw-r--r-- 516 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
object Foo {
  // spurious error if:
  //   - this definition precedes that of apply (which is overloaded with the synthetic one derived from the case class)
  //   - AND `Foo.apply` is explicitly applied to `[A]` (no error if `[A]` is inferred)
  //
  def referToPolyOverloadedApply[A]: Foo[A] = Foo.apply[A]("bla")
  //                                                   ^
  //  found   : String("bla")
  //  required: Int

  def apply[A](x: Int): Foo[A] = ???
}
case class Foo[A](x: String) // must be polymorphic