From 0f6e14043510907ef0ee0f6a86699064b017f0de Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 6 Oct 2006 14:36:24 +0000 Subject: fixed bug767 --- src/compiler/scala/tools/nsc/ast/Trees.scala | 8 ++++---- src/compiler/scala/tools/nsc/transform/UnCurry.scala | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/ast/Trees.scala b/src/compiler/scala/tools/nsc/ast/Trees.scala index 91a2d727a3..a8b64575cb 100644 --- a/src/compiler/scala/tools/nsc/ast/Trees.scala +++ b/src/compiler/scala/tools/nsc/ast/Trees.scala @@ -610,10 +610,10 @@ trait Trees requires Global { case Ident(name) => case Literal(value) => case TypeTree() => - case SingletonTypeTree(ref) => (eliminated by typecheck) - case SelectFromTypeTree(qualifier, selector) => (eliminated by typecheck) - case CompoundTypeTree(templ: Template) => (eliminated by typecheck) - case AppliedTypeTree(tpt, args) => (eliminated by typecheck) + case SingletonTypeTree(ref) => (eliminated by uncurry) + case SelectFromTypeTree(qualifier, selector) => (eliminated by uncurry) + case CompoundTypeTree(templ: Template) => (eliminated by uncurry) + case AppliedTypeTree(tpt, args) => (eliminated by uncurry) */ abstract class TreeCopier { diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index 0957e0c435..13b8ea7638 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -415,7 +415,7 @@ abstract class UnCurry extends InfoTransform with TypingTransformers { if (tree.symbol.isMethod && (!tree.tpe.isInstanceOf[PolyType] || tree.tpe.typeParams.isEmpty)) { if (!tree.tpe.isInstanceOf[MethodType]) tree.tpe = MethodType(List(), tree.tpe); atPos(tree.pos)(Apply(tree, List()) setType tree.tpe.resultType) - } else if (tree.isType && !tree.isInstanceOf[TypeTree]) { + } else if (tree.isType) { TypeTree(tree.tpe) setPos tree.pos } else { tree @@ -471,8 +471,10 @@ abstract class UnCurry extends InfoTransform with TypingTransformers { case Return(expr) if (tree.symbol != currentOwner.enclMethod) => if (settings.debug.value) log("non local return in "+tree.symbol+" from "+currentOwner.enclMethod) atPos(tree.pos)(nonLocalReturnThrow(expr, tree.symbol)) - case _ => + case TypeTree() => tree + case _ => + if (tree.isType) TypeTree(tree.tpe) setPos tree.pos else tree } } } -- cgit v1.2.3