aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Typer.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-05-27 15:46:42 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-05-27 16:41:38 +0200
commit6c7b7e3eea21d4a704bea9014a2867fd330294da (patch)
treed8fcfa70af14baffe0b945ca5bb9cb1afb7922ed /src/dotty/tools/dotc/typer/Typer.scala
parent8f08b714424b3ada8a12156bdc3fd43e13ad09ee (diff)
downloaddotty-6c7b7e3eea21d4a704bea9014a2867fd330294da.tar.gz
dotty-6c7b7e3eea21d4a704bea9014a2867fd330294da.tar.bz2
dotty-6c7b7e3eea21d4a704bea9014a2867fd330294da.zip
Fix `A*` propagating outside matches
Diffstat (limited to 'src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Typer.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala
index 9f38ac0f0..4f27912f1 100644
--- a/src/dotty/tools/dotc/typer/Typer.scala
+++ b/src/dotty/tools/dotc/typer/Typer.scala
@@ -420,10 +420,15 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
case _ => ifExpr
}
def ascription(tpt: Tree, isWildcard: Boolean) = {
+ val underlyingTreeTpe =
+ if (isRepeatedParamType(tpt)) TypeTree(defn.SeqType.appliedTo(pt :: Nil))
+ else tpt
+
val expr1 =
- if (isWildcard) tree.expr.withType(tpt.tpe)
+ if (isRepeatedParamType(tpt)) tree.expr.withType(defn.SeqType.appliedTo(pt :: Nil))
+ else if (isWildcard) tree.expr.withType(tpt.tpe)
else typed(tree.expr, tpt.tpe.widenSkolem)
- assignType(cpy.Typed(tree)(expr1, tpt), tpt)
+ assignType(cpy.Typed(tree)(expr1, tpt), underlyingTreeTpe)
}
if (untpd.isWildcardStarArg(tree))
cases(