diff options
author | liu fengyun <liu@fengy.me> | 2017-04-13 15:02:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-13 15:02:03 +0200 |
commit | de6461ab17562dbb46a1ff094590e051d03cb54c (patch) | |
tree | dee86654f0cdd228730676e6ba7668ce6d12e4da /compiler | |
parent | 195fe4a475b7f35fba09af6126a205a959bb284d (diff) | |
parent | 15e8d83a377398c9c13a5319a23645d10b14579a (diff) | |
download | dotty-de6461ab17562dbb46a1ff094590e051d03cb54c.tar.gz dotty-de6461ab17562dbb46a1ff094590e051d03cb54c.tar.bz2 dotty-de6461ab17562dbb46a1ff094590e051d03cb54c.zip |
Merge pull request #2256 from dotty-staging/fix-2254
fix #2254: dealias types in decomposition of spaces
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/src/dotty/tools/dotc/transform/patmat/Space.scala | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala b/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala index baf1ae356..229545a57 100644 --- a/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala +++ b/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala @@ -324,7 +324,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic { debug.println(s"candidates for ${tp.show} : [${children.map(_.show).mkString(", ")}]") - tp match { + tp.dealias match { case OrType(tp1, tp2) => List(Typ(tp1, true), Typ(tp2, true)) case _ if tp =:= ctx.definitions.BooleanType => List( @@ -379,7 +379,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic { def canDecompose(tp: Type): Boolean = { val res = tp.classSymbol.is(allOf(Abstract, Sealed)) || tp.classSymbol.is(allOf(Trait, Sealed)) || - tp.isInstanceOf[OrType] || + tp.dealias.isInstanceOf[OrType] || tp =:= ctx.definitions.BooleanType || tp.classSymbol.is(allOf(Enum, Sealed)) // Enum value doesn't have Sealed flag |