summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-03-07 22:04:04 +0100
committerEugene Burmako <xeno.by@gmail.com>2014-03-07 22:04:04 +0100
commit10154cf27d4e8f9f9be5411fb6bfb9b8fbe62ebc (patch)
treef92cf356af2254a5e655aa7df753018c514de6eb /src
parent2dddb03b267770afcd0249ad700e55d53019e637 (diff)
downloadscala-10154cf27d4e8f9f9be5411fb6bfb9b8fbe62ebc.tar.gz
scala-10154cf27d4e8f9f9be5411fb6bfb9b8fbe62ebc.tar.bz2
scala-10154cf27d4e8f9f9be5411fb6bfb9b8fbe62ebc.zip
SI-8369 resetAttrs now correctly accounts for skolems
resetAttrs (née resetLocalAttrs) has been oblivious to existence of skolems. Not anymore, which prevents us from reverting to the untyper nightmare.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/ast/Trees.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/Trees.scala b/src/compiler/scala/tools/nsc/ast/Trees.scala
index 9ca06427e8..3652f51153 100644
--- a/src/compiler/scala/tools/nsc/ast/Trees.scala
+++ b/src/compiler/scala/tools/nsc/ast/Trees.scala
@@ -240,6 +240,7 @@ trait Trees extends scala.reflect.internal.Trees { self: Global =>
registerLocal(sym.moduleClass)
registerLocal(sym.companionClass)
registerLocal(sym.companionModule)
+ registerLocal(sym.deSkolemize)
sym match {
case sym: TermSymbol => registerLocal(sym.referenced)
case _ => ;
@@ -309,7 +310,7 @@ trait Trees extends scala.reflect.internal.Trees { self: Global =>
// if we move these trees into lexical contexts different from their original locations.
if (dupl.hasSymbol) {
val sym = dupl.symbol
- val vetoScope = !brutally && !(locals contains sym)
+ val vetoScope = !brutally && !(locals contains sym) && !(locals contains sym.deSkolemize)
val vetoThis = dupl.isInstanceOf[This] && sym.isPackageClass
if (!(vetoScope || vetoThis)) dupl.symbol = NoSymbol
}