File: tcpoly_overriding.scala

package info (click to toggle)
scala 2.11.12-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 62,776 kB
  • sloc: java: 13,415; xml: 3,252; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (19 lines) | stat: -rw-r--r-- 649 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

import scala.language.{ higherKinds }

abstract class A[t[x]] {
  def b: t[Int]
}

class B extends A[List] {
    // underlying functionality being tested is overriding, but bugs manifest itself during erasure
    // erasure should generate two methods: one that returns an Object (to implement the method in A)
    // one that is as close as possible to the original method and thus returns a List
    // the problem only manifests itself here -- but it's really a problem with overriding
    // the link between this method and the method in A isn't seen
  def b: List[Int] = List(1)
}

object Test extends App {
  Console.println((new B).b(0))
}