diff options
author | Martin Odersky <odersky@gmail.com> | 2013-08-22 09:27:06 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-08-22 09:27:06 +0200 |
commit | 4d8329667a71242e56907a73760f1212a96d9376 (patch) | |
tree | 6c47c356b18b6a0fed4542d9871df5752312dfee /src/dotty/tools/dotc/ast/CheckTrees.scala | |
parent | 0e55b70a1a04e2d51b819630214e876ce7c1af84 (diff) | |
download | dotty-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.scala | 8 |
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))) |