diff options
Diffstat (limited to 'tests/pos/t2435.scala')
-rw-r--r-- | tests/pos/t2435.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/pos/t2435.scala b/tests/pos/t2435.scala new file mode 100644 index 000000000..697e9e1f2 --- /dev/null +++ b/tests/pos/t2435.scala @@ -0,0 +1,27 @@ +object Bug { + abstract class FChain { + type T + + def chain(constant:String) = + new FConstant[this.type](constant, this) //removing [this.type], everything compiles + } + + case class FConstant[E <: FChain](constant:String, tail:E) extends FChain { + type T = tail.T + } + + object FNil extends FChain { + type T = Unit + } + +} + +object Test { + import Bug._ + println("Compiles:") + val a1 = FNil.chain("a").chain("a") + val a2 = a1.chain("a") + + println("\nDoesn't compile:") + val a = FNil.chain("a").chain("a").chain("a") +} |