diff options
author | Martin Odersky <odersky@gmail.com> | 2010-03-01 11:11:25 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2010-03-01 11:11:25 +0000 |
commit | d18435dcd24bed103e0f2a8fa0019dfe8fd60eea (patch) | |
tree | 498950712ca54d66a95e7f6ad6d7da50d2f2a102 | |
parent | a73bbdfed16e145da45edef41e0c2542173ac5bf (diff) | |
download | scala-d18435dcd24bed103e0f2a8fa0019dfe8fd60eea.tar.gz scala-d18435dcd24bed103e0f2a8fa0019dfe8fd60eea.tar.bz2 scala-d18435dcd24bed103e0f2a8fa0019dfe8fd60eea.zip |
Closes #3076. Review by community.
-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 |