From d3a4916b4f04e89a6fd850206f92bbffa8cce14e Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Wed, 16 Nov 2016 22:34:39 +0100 Subject: 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. --- tests/neg/leaks.scala | 9 +++++++++ tests/pos/leaks.scala | 10 ++++++++++ 2 files changed, 19 insertions(+) (limited to 'tests') 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 + } + } +} -- cgit v1.2.3