summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2010-03-01 11:11:25 +0000
committerMartin Odersky <odersky@gmail.com>2010-03-01 11:11:25 +0000
commitd18435dcd24bed103e0f2a8fa0019dfe8fd60eea (patch)
tree498950712ca54d66a95e7f6ad6d7da50d2f2a102
parenta73bbdfed16e145da45edef41e0c2542173ac5bf (diff)
downloadscala-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.scala4
-rw-r--r--test/files/pos/t3076/C2.scala4
-rw-r--r--test/files/pos/t3076/T.scala2
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