summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/matching/ParallelMatching.scala4
-rw-r--r--src/compiler/scala/tools/nsc/matching/Patterns.scala5
2 files changed, 4 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
index 73ecbdee70..00f4186805 100644
--- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
+++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
@@ -566,11 +566,13 @@ trait ParallelMatching extends ast.TreeDSL
def isEquivalent = head.tpe =:= pattern.tpe
def isObjectTest = pattern.isObject && (head.tpe =:= pattern.tpe)
+ def whichSubs = if (head.isCaseClass) (pattern expandToArity head.arity) else Nil
+
def ifElsePattern(yes: Pattern) = if (isEquivalent) yes else pattern
def succDummy = succRows += ((j, NoPattern :: pmatch.dummies))
def succTyped(pp: Pattern) = succRows += ((j, ifElsePattern(pp) :: pmatch.dummies))
- def succSubs = succRows += ((j, ifElsePattern(NoPattern) :: (pattern expandToArity head.arity)))
+ def succSubs = succRows += ((j, ifElsePattern(NoPattern) :: whichSubs))
def failOnly = failRows += ((j, pattern))
pattern match {
diff --git a/src/compiler/scala/tools/nsc/matching/Patterns.scala b/src/compiler/scala/tools/nsc/matching/Patterns.scala
index 55d35bf884..7621c1c2f3 100644
--- a/src/compiler/scala/tools/nsc/matching/Patterns.scala
+++ b/src/compiler/scala/tools/nsc/matching/Patterns.scala
@@ -139,10 +139,7 @@ trait Patterns extends ast.TreeDSL {
private def isColonColon = cleanName == "::"
- override def expandToArity(newArity: Int): List[Pattern] = {
- assert(newArity == args.length)
- toPats(args)
- }
+ override def expandToArity(newArity: Int): List[Pattern] = toPats(args)
override def simplify(pv: PatternVar) =
if (args.isEmpty) this rebindToEmpty tree.tpe