summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
Diffstat (limited to 'test/files')
-rw-r--r--test/files/pos/t6651.scala29
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)
}
+