diff options
author | Martin Odersky <odersky@gmail.com> | 2016-11-23 13:22:44 +0100 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2016-11-24 14:44:57 +0100 |
commit | a911a701e775b5151bc146dc221745110f304057 (patch) | |
tree | 9cc2674ac3108d38705bec31c5ae3a1979f81332 /compiler/src/dotty/tools/dotc/typer/Typer.scala | |
parent | 3599c243c86ae0a926ef45a435d38b7878dc322f (diff) | |
download | dotty-a911a701e775b5151bc146dc221745110f304057.tar.gz dotty-a911a701e775b5151bc146dc221745110f304057.tar.bz2 dotty-a911a701e775b5151bc146dc221745110f304057.zip |
Enable GADT matching for pattern values
So far, only typed patterns an dunapply had GADT matching.
i1737.scala shows that we need to do the same thing for objects.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/typer/Typer.scala | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Typer.scala b/compiler/src/dotty/tools/dotc/typer/Typer.scala index 9f5a942d6..ccc74cfff 100644 --- a/compiler/src/dotty/tools/dotc/typer/Typer.scala +++ b/compiler/src/dotty/tools/dotc/typer/Typer.scala @@ -1830,7 +1830,9 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit ctx.typeComparer.GADTused = false if (ctx.mode is Mode.Pattern) { tree match { - case _: RefTree | _: Literal if !isVarPattern(tree) => + case _: RefTree | _: Literal + if !isVarPattern(tree) && + !(tree.tpe <:< pt)(ctx.addMode(Mode.GADTflexible)) => checkCanEqual(pt, wtp, tree.pos)(ctx.retractMode(Mode.Pattern)) case _ => } |