aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ast
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-08-27 14:12:31 +0200
committerMartin Odersky <odersky@gmail.com>2013-08-27 14:12:41 +0200
commite2a05a5ac38647f9727d1e0ec8c3c14ac82b5de7 (patch)
tree78b7e72faf3fd4478c82048c4f65f2528684525e /src/dotty/tools/dotc/ast
parenteab2123cd727fad2e0139e63edacfff7307d49f0 (diff)
downloaddotty-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.scala5
-rw-r--r--src/dotty/tools/dotc/ast/Trees.scala4
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 */