summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-10-26 14:42:20 +0000
committerMartin Odersky <odersky@gmail.com>2006-10-26 14:42:20 +0000
commit43949e44b7f2938891919736c2ee54b05c62dfcc (patch)
treef6093b5bf1dfcde3e2cac17f7ab1e409f2526097
parent2738fdc2ed8b0641dcec138eb3ce298b2a11af31 (diff)
downloadscala-43949e44b7f2938891919736c2ee54b05c62dfcc.tar.gz
scala-43949e44b7f2938891919736c2ee54b05c62dfcc.tar.bz2
scala-43949e44b7f2938891919736c2ee54b05c62dfcc.zip
fixed bug783
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index fc849661a6..8b5cabc8f8 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -336,7 +336,7 @@ trait Typers requires Analyzer {
}
/** Post-process an identifier or selection node, performing the following:
- * (1) Check that non-function pattern expressions are stable
+ * (1) Check that non-function pattern expressions and case-factories are stable
* (2) Check that packages and static modules are not used as values
* (3) Turn tree type into stable type if possible and required by context.
*/
@@ -345,7 +345,8 @@ trait Typers requires Analyzer {
inferExprAlternative(tree, pt)
val sym = tree.symbol
if (tree.tpe.isError) tree
- else if ((mode & (PATTERNmode | FUNmode)) == PATTERNmode && tree.isTerm) { // (1)
+ else if (sym.isCaseFactory ||
+ (mode & (PATTERNmode | FUNmode)) == PATTERNmode && tree.isTerm) { // (1)
checkStable(tree)
} else if ((mode & (EXPRmode | QUALmode)) == EXPRmode && !sym.isValue) { // (2)
errorTree(tree, ""+sym+" is not a value")