diff options
-rw-r--r-- | test/files/pos/t6651.scala | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/test/files/pos/t6651.scala b/test/files/pos/t6651.scala index 394e3fe689..55a3b74e4c 100644 --- a/test/files/pos/t6651.scala +++ b/test/files/pos/t6651.scala @@ -3,8 +3,8 @@ class YouAreYourself[A <: AnyRef](val you: A) extends AnyVal { } object Test { - val s = "" - val s1: s.type = new YouAreYourself[s.type](s).yourself + val s = "" + val s1: s.type = new YouAreYourself[s.type](s).yourself } trait Path { @@ -12,15 +12,22 @@ trait Path { } final class ValueClass[P <: Path](val path: P) extends AnyVal { - import path._ - def apply(dep: Dep)(d2: dep.type, foo: Int): (Dep, d2.type) = (d2 ,d2) -} + import path.Dep -object TestValueClass { - object P extends Path { - type Dep = String - } + def apply(dep: Dep)(d2: dep.type, foo: Int): (Dep, d2.type) = (d2, d2) - val s: String = "" - new ValueClass(P).apply(s)(s, 0): (String, s.type) + // This generates dodgy code; note `ValueClass.this`: + // + // final def bounds$extension[D >: Nothing <: ValueClass.this.path.Dep, + // P >: Nothing <: Path] + // ($this: ValueClass[P]) + // (dep: D) + // (d2: dep.type, foo: Int): (D, d2.type) = scala.Tuple2.apply[D, d2.type](d2, d2); + // + // Nothing crashes down the line, but it certainly doesn't conform to best-practices. + // + // An better alternative would be to add a type parameter for the (singleton) type of + // the wrapped value. + def bounds[D <: Dep](dep: D)(d2: dep.type, foo: Int): (D, d2.type) = (d2, d2) } + |