aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ast/CheckTrees.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-08-22 09:27:06 +0200
committerMartin Odersky <odersky@gmail.com>2013-08-22 09:27:06 +0200
commit4d8329667a71242e56907a73760f1212a96d9376 (patch)
tree6c47c356b18b6a0fed4542d9871df5752312dfee /src/dotty/tools/dotc/ast/CheckTrees.scala
parent0e55b70a1a04e2d51b819630214e876ce7c1af84 (diff)
downloaddotty-4d8329667a71242e56907a73760f1212a96d9376.tar.gz
dotty-4d8329667a71242e56907a73760f1212a96d9376.tar.bz2
dotty-4d8329667a71242e56907a73760f1212a96d9376.zip
Fixing leak logic by turning a key predicate around.
Diffstat (limited to 'src/dotty/tools/dotc/ast/CheckTrees.scala')
-rw-r--r--src/dotty/tools/dotc/ast/CheckTrees.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/ast/CheckTrees.scala b/src/dotty/tools/dotc/ast/CheckTrees.scala
index 0bcf87dae..92a069a76 100644
--- a/src/dotty/tools/dotc/ast/CheckTrees.scala
+++ b/src/dotty/tools/dotc/ast/CheckTrees.scala
@@ -20,8 +20,8 @@ object CheckTrees {
def escapingRefs(block: Block)(implicit ctx: Context): Set[NamedType] = {
var hoisted: Set[Symbol] = Set()
lazy val locals = localSyms(block.stats).toSet
- def isNonLocal(sym: Symbol): Boolean =
- !(locals contains sym) || isHoistableClass(sym)
+ def isLocal(sym: Symbol): Boolean =
+ (locals contains sym) && !isHoistableClass(sym)
def isHoistableClass(sym: Symbol) =
sym.isClass && {
(hoisted contains sym) || {
@@ -30,8 +30,8 @@ object CheckTrees {
}
}
def leakingTypes(tp: Type): Set[NamedType] =
- tp namedPartsWith (tp => isNonLocal(tp.symbol))
- def typeLeaks(tp: Type) = leakingTypes(tp).isEmpty
+ tp namedPartsWith (tp => isLocal(tp.symbol))
+ def typeLeaks(tp: Type): Boolean = leakingTypes(tp).isEmpty
def classLeaks(sym: ClassSymbol): Boolean =
(sym.info.parents exists typeLeaks) ||
(sym.decls.toList exists (t => typeLeaks(t.info)))