summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
Diffstat (limited to 'test/files')
-rw-r--r--test/files/neg/bug2441.check4
-rw-r--r--test/files/neg/bug2441.scala15
-rw-r--r--test/files/pos/bug2441pos.scala8
3 files changed, 27 insertions, 0 deletions
diff --git a/test/files/neg/bug2441.check b/test/files/neg/bug2441.check
new file mode 100644
index 0000000000..2c82e6a9f8
--- /dev/null
+++ b/test/files/neg/bug2441.check
@@ -0,0 +1,4 @@
+bug2441.scala:12: error: private class Y escapes its defining scope as part of type Some[B.Y]
+ override def f = Some(new B.Y)
+ ^
+one error found
diff --git a/test/files/neg/bug2441.scala b/test/files/neg/bug2441.scala
new file mode 100644
index 0000000000..6784ebb333
--- /dev/null
+++ b/test/files/neg/bug2441.scala
@@ -0,0 +1,15 @@
+trait X
+trait A {
+ def f: Option[X]
+ def g: Option[X]
+}
+object B {
+ private class Y extends X { val y = 42 }
+}
+class B extends A {
+ private class Bippy
+
+ override def f = Some(new B.Y)
+ override def g: Option[X] = Some(new B.Y)
+}
+
diff --git a/test/files/pos/bug2441pos.scala b/test/files/pos/bug2441pos.scala
new file mode 100644
index 0000000000..25eb2232c9
--- /dev/null
+++ b/test/files/pos/bug2441pos.scala
@@ -0,0 +1,8 @@
+abstract class A {
+ private def foo = List(1, 2)
+}
+trait B extends A {
+ private def foo = List("a", "b")
+ // However it compiles correctly if the type is given:
+ // private def foo: List[String] = List("a", "b")
+}