diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 4 | ||||
-rw-r--r-- | test/files/pos/t3076/C2.scala | 4 | ||||
-rw-r--r-- | test/files/pos/t3076/T.scala | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 04cbc6f5d2..42d6c31471 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -449,13 +449,13 @@ trait Typers { self: Analyzer => check(owner, scope, pt, tree setType tp1.typeSymbol.classBound) else if (owner == NoSymbol) tree setType packSymbols(hiddenSymbols.reverse, tp1) - else { // privates + else if (!phase.erasedTypes) { // privates val badSymbol = hiddenSymbols.head error(tree.pos, (if (badSymbol hasFlag PRIVATE) "private " else "") + badSymbol + " escapes its defining scope as part of type "+tree.tpe) setError(tree) - } + } else tree } def addHidden(sym: Symbol) = diff --git a/test/files/pos/t3076/C2.scala b/test/files/pos/t3076/C2.scala new file mode 100644 index 0000000000..d08f9ee81d --- /dev/null +++ b/test/files/pos/t3076/C2.scala @@ -0,0 +1,4 @@ +class C2 { + def m1() { new T { } } + def m2() { new T { } } +} diff --git a/test/files/pos/t3076/T.scala b/test/files/pos/t3076/T.scala new file mode 100644 index 0000000000..b710a29343 --- /dev/null +++ b/test/files/pos/t3076/T.scala @@ -0,0 +1,2 @@ +trait T { private val z = new C1 } +private class C1 |