diff options
author | Seth Tisue <seth@tisue.net> | 2015-09-14 06:49:15 -0500 |
---|---|---|
committer | Seth Tisue <seth@tisue.net> | 2015-09-14 06:49:15 -0500 |
commit | 93ce1312e4e4150e1d0a1a1947e69e87d9e83a35 (patch) | |
tree | e84a64f26689407ca93c126401a21b9579bed660 /src/compiler | |
parent | 7ec4207a2fa84e7a35f514a911893b7e3cb57672 (diff) | |
parent | bdba16f5de91c4a8ac345c345a674f4ba56b542b (diff) | |
download | scala-93ce1312e4e4150e1d0a1a1947e69e87d9e83a35.tar.gz scala-93ce1312e4e4150e1d0a1a1947e69e87d9e83a35.tar.bz2 scala-93ce1312e4e4150e1d0a1a1947e69e87d9e83a35.zip |
Merge pull request #4740 from gbasler/ticket/SI-9369
SI-9369 Fix pattern matcher warnings for diamond shaped inheritance.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala b/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala index a11906ace1..1331eb6993 100644 --- a/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala +++ b/src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala @@ -150,7 +150,11 @@ trait TreeAndTypeAnalysis extends Debugging { acc: List[List[Type]]): List[List[Type]] = wl match { case hd :: tl => val children = enumerateChildren(hd) - groupChildren(tl ++ children, acc :+ filterChildren(children)) + // put each trait in a new group, since traits could belong to the same + // group as a derived class + val (traits, nonTraits) = children.partition(_.isTrait) + val filtered = (traits.map(List(_)) ++ List(nonTraits)).map(filterChildren) + groupChildren(tl ++ children, acc ++ filtered) case Nil => acc } |