aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/typer/Typer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-11-23 13:22:44 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-24 14:44:57 +0100
commita911a701e775b5151bc146dc221745110f304057 (patch)
tree9cc2674ac3108d38705bec31c5ae3a1979f81332 /compiler/src/dotty/tools/dotc/typer/Typer.scala
parent3599c243c86ae0a926ef45a435d38b7878dc322f (diff)
downloaddotty-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.scala4
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 _ =>
}