From ce262e45141db642c2d5c7e4c7427f84fd08f854 Mon Sep 17 00:00:00 2001 From: Miles Sabin Date: Fri, 22 Jul 2016 17:38:46 +0100 Subject: Added tests for SI-482/SI-4914 --- test/files/pos/t482.scala | 7 +++++++ test/files/pos/t4914.scala | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 test/files/pos/t482.scala create mode 100644 test/files/pos/t4914.scala (limited to 'test') diff --git a/test/files/pos/t482.scala b/test/files/pos/t482.scala new file mode 100644 index 0000000000..b121c93337 --- /dev/null +++ b/test/files/pos/t482.scala @@ -0,0 +1,7 @@ +object Test { + class Foo { val z = "foo"; val y : z.type = z } + + val x : ({ val y : z.type } forSome { val z : String }) = new Foo + + val x2 : ({ val y : T } forSome { type T <: String with Singleton }) = new Foo +} diff --git a/test/files/pos/t4914.scala b/test/files/pos/t4914.scala new file mode 100644 index 0000000000..a6c8ef5a4e --- /dev/null +++ b/test/files/pos/t4914.scala @@ -0,0 +1,20 @@ +trait Type { + type S +} + +class ConcreteType extends Type { + type S = Double +} + +trait Base { + type T <: Type + val m: Map[t#S, t#S] forSome { type t <: T with Singleton } + val n: Map[x.type#S, x.type#S] forSome { val x: T } +} + +abstract class Derived extends Base { + override type T = ConcreteType + override val m = Map[Double, Double]() + /** This does not work. ยง3.2.10 indicates that types n is shorthand for type of m. */ + override val n = Map[Double, Double]() +} -- cgit v1.2.3