aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc')
-rw-r--r--src/dotty/tools/dotc/ast/Desugar.scala2
-rw-r--r--src/dotty/tools/dotc/typer/Typer.scala8
2 files changed, 7 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala
index cfb9c338f..9f37326f6 100644
--- a/src/dotty/tools/dotc/ast/Desugar.scala
+++ b/src/dotty/tools/dotc/ast/Desugar.scala
@@ -862,7 +862,7 @@ object desugar {
case tree @ Bind(_, tree1) =>
add(tree, TypeTree())
collect(tree1)
- case Typed(id: Ident, t) if isVarPattern(id) && id.name != nme.WILDCARD =>
+ case Typed(id: Ident, t) if isVarPattern(id) && id.name != nme.WILDCARD && !isWildcardStarArg(tree) =>
add(id, t)
case id: Ident if isVarPattern(id) && id.name != nme.WILDCARD =>
add(id, TypeTree())
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala
index 7b8fe3727..9066012f0 100644
--- a/src/dotty/tools/dotc/typer/Typer.scala
+++ b/src/dotty/tools/dotc/typer/Typer.scala
@@ -333,7 +333,11 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
def typedTyped(tree: untpd.Typed, pt: Type)(implicit ctx: Context): Tree = track("typedTyped") {
def regularTyped(isWildcard: Boolean) = {
- val tpt1 = typedType(tree.tpt)
+ val tpt1 =
+ if (untpd.isWildcardStarArg(tree))
+ TypeTree(defn.SeqClass.typeRef.appliedTo(pt :: Nil))
+ else
+ typedType(tree.tpt)
val expr1 =
if (isWildcard) tree.expr withType tpt1.tpe
else typed(tree.expr, tpt1.tpe)
@@ -344,7 +348,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
if (id.name == nme.WILDCARD) regularTyped(isWildcard = true)
else {
import untpd._
- typed(Bind(id.name, Typed(Ident(nme.WILDCARD), tree.tpt)).withPos(id.pos))
+ typed(Bind(id.name, Typed(Ident(nme.WILDCARD), tree.tpt)).withPos(id.pos), pt)
}
case _ =>
if (untpd.isWildcardStarArg(tree))