From 6f6546ebfc26564843621e79d840209a5103d3c8 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 12 Mar 2014 10:36:36 +0100 Subject: Fix "not a class" crasher in live variable analysis Predicate the `asClass` cast with an `isClass` check. Fixes #63 --- src/main/scala/scala/async/internal/LiveVariables.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main/scala') diff --git a/src/main/scala/scala/async/internal/LiveVariables.scala b/src/main/scala/scala/async/internal/LiveVariables.scala index 6c67e99..7f386c8 100644 --- a/src/main/scala/scala/async/internal/LiveVariables.scala +++ b/src/main/scala/scala/async/internal/LiveVariables.scala @@ -55,7 +55,8 @@ trait LiveVariables { // determine which fields should be live also at the end (will not be nulled out) val noNull: Set[Symbol] = liftedSyms.filter { sym => - tpe(sym).typeSymbol.asClass.isPrimitive || liftables.exists { tree => + val typeSym = tpe(sym).typeSymbol + (typeSym.isClass && typeSym.asClass.isPrimitive) || liftables.exists { tree => !liftedSyms.contains(tree.symbol) && tree.exists(_.symbol == sym) } } -- cgit v1.2.3