aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-11-16 22:34:39 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:08 +0100
commitd3a4916b4f04e89a6fd850206f92bbffa8cce14e (patch)
tree2ab2e2b002c1384b7a16a0d447f2600228f33c76 /tests
parentce23380cbcec633cba63f19bc8f02c1d2b8048bb (diff)
downloaddotty-d3a4916b4f04e89a6fd850206f92bbffa8cce14e.tar.gz
dotty-d3a4916b4f04e89a6fd850206f92bbffa8cce14e.tar.bz2
dotty-d3a4916b4f04e89a6fd850206f92bbffa8cce14e.zip
checkNoPrivateLeaks: handle defs in local classes
The access boundary of a def in a local class is the owner of that class, previously it was set to the access boundary of the owner of the class instead.
Diffstat (limited to 'tests')
-rw-r--r--tests/neg/leaks.scala9
-rw-r--r--tests/pos/leaks.scala10
2 files changed, 19 insertions, 0 deletions
diff --git a/tests/neg/leaks.scala b/tests/neg/leaks.scala
index bb81d8cd2..0431c18ce 100644
--- a/tests/neg/leaks.scala
+++ b/tests/neg/leaks.scala
@@ -5,3 +5,12 @@ class Outer {
def foo: x.type = x // error: non-private method foo refers to private value x in its type signature
}
}
+
+class Outer3Neg {
+ def meth: Unit = {
+ class Inner {
+ private val x: Int = 1
+ def foo: x.type = x // error
+ }
+ }
+}
diff --git a/tests/pos/leaks.scala b/tests/pos/leaks.scala
index dbb47d75a..3fe029c75 100644
--- a/tests/pos/leaks.scala
+++ b/tests/pos/leaks.scala
@@ -15,3 +15,13 @@ class Outer2 {
def foo: Outer2.x.type = Outer2.x // OK
}
}
+
+class Outer3 {
+ private val x: Int = 1
+
+ def meth: Unit = {
+ class Inner {
+ def foo: x.type = x // OK
+ }
+ }
+}