diff options
author | Martin Odersky <odersky@gmail.com> | 2013-08-27 14:12:31 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-08-27 14:12:41 +0200 |
commit | e2a05a5ac38647f9727d1e0ec8c3c14ac82b5de7 (patch) | |
tree | 78b7e72faf3fd4478c82048c4f65f2528684525e /src/dotty/tools/dotc/ast | |
parent | eab2123cd727fad2e0139e63edacfff7307d49f0 (diff) | |
download | dotty-e2a05a5ac38647f9727d1e0ec8c3c14ac82b5de7.tar.gz dotty-e2a05a5ac38647f9727d1e0ec8c3c14ac82b5de7.tar.bz2 dotty-e2a05a5ac38647f9727d1e0ec8c3c14ac82b5de7.zip |
Fixed bugs related to typechecking closures.
Diffstat (limited to 'src/dotty/tools/dotc/ast')
-rw-r--r-- | src/dotty/tools/dotc/ast/Desugar.scala | 5 | ||||
-rw-r--r-- | src/dotty/tools/dotc/ast/Trees.scala | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala index 52c9cd187..f998ddec2 100644 --- a/src/dotty/tools/dotc/ast/Desugar.scala +++ b/src/dotty/tools/dotc/ast/Desugar.scala @@ -285,7 +285,7 @@ object desugar { /** Make closure corresponding to function params => body */ def makeClosure(params: List[ValDef], body: Tree) = Block( - DefDef(Modifiers(Synthetic), nme.ANON_FUN, Nil, params :: Nil, EmptyTree, body), + DefDef(Modifiers(Synthetic), nme.ANON_FUN, Nil, params :: Nil, TypeTree(), body), Closure(Nil, Ident(nme.ANON_FUN), EmptyTree)) /** Make closure corresponding to partial function { cases } */ @@ -482,8 +482,7 @@ object desugar { AppliedTypeTree(ref(defn.RepeatedParamType), t) else { assert(ctx.mode.isExpr, ctx.mode) - if (op == nme.WILDCARD) tree // desugar later by eta expansion - else Select(t, op) + Select(t, op) } case PrefixOp(op, t) => if ((ctx.mode is Mode.Type) && op == nme.ARROWkw) diff --git a/src/dotty/tools/dotc/ast/Trees.scala b/src/dotty/tools/dotc/ast/Trees.scala index 254818b27..2392e52be 100644 --- a/src/dotty/tools/dotc/ast/Trees.scala +++ b/src/dotty/tools/dotc/ast/Trees.scala @@ -186,7 +186,7 @@ object Trees { withTypeUnchecked(tpe) } - def withTypeUnchecked(tpe: Type): ThisTree[Type] = { + def withTypeUnchecked(tpe: Type): ThisTree[Type] = { val tree = (if (myTpe == null || (myTpe.asInstanceOf[AnyRef] eq tpe.asInstanceOf[AnyRef])) this @@ -524,6 +524,8 @@ object Trees { type ThisTree[-T >: Untyped] = TypeTree[T] override def initialPos = NoPosition override def isEmpty = !hasType && original.isEmpty + override def toString = + s"TypeTree${if (hasType) s"[$typeOpt]" else s"($original)"}" } /** ref.type */ |