diff options
author | Martin Odersky <odersky@gmail.com> | 2008-01-17 16:37:27 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-01-17 16:37:27 +0000 |
commit | 76c06b4661b70e934530a0debad34a5766ee43e9 (patch) | |
tree | 4abb85699a2d663681a9ca31fb7ccff45b80746f /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | |
parent | e5ca1a3906ae29c1d6db5de333932bbfc189cedc (diff) | |
download | scala-76c06b4661b70e934530a0debad34a5766ee43e9.tar.gz scala-76c06b4661b70e934530a0debad34a5766ee43e9.tar.bz2 scala-76c06b4661b70e934530a0debad34a5766ee43e9.zip |
build target is now 1.5
case classes now generate objects not factory methods. some small
cleanups for type inference
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 31 |
1 files changed, 1 insertions, 30 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 5c7841651b..e098224e59 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -373,7 +373,7 @@ abstract class RefChecks extends InfoTransform { var state = CoVariance while (sym != clazz && state != AnyVariance) { //Console.println("flip: " + sym + " " + sym.isParameter());//DEBUG - if ((sym hasFlag PARAM) && !sym.owner.isConstructor && !sym.owner.isCaseFactory && + if ((sym hasFlag PARAM) && !sym.owner.isConstructor && !sym.owner.isCaseApplyOrUnapply && !(tvar.isTypeParameterOrSkolem && sym.isTypeParameterOrSkolem && tvar.owner == sym.owner)) state = -state; else if (!sym.owner.isClass || @@ -574,9 +574,6 @@ abstract class RefChecks extends InfoTransform { } } - def isConcreteLocalCaseFactory(clazz: Symbol) = - (clazz hasFlag CASE) && !(clazz hasFlag ABSTRACT) && !(clazz.owner hasFlag PACKAGE) - override def transformStats(stats: List[Tree], exprOwner: Symbol): List[Tree] = { pushLevel() enterSyms(stats) @@ -635,32 +632,6 @@ abstract class RefChecks extends InfoTransform { else transformTrees(List(cdef, vdef, ddef)) } - case ClassDef(_, _, _, _) if isConcreteLocalCaseFactory(tree.symbol) => - val clazz = tree.symbol - val factory = clazz.caseFactory - if (factory == NoSymbol) { - assert(clazz.owner.isTerm, clazz) - List(transform(tree)) - } else { - def mkArgument(vparam: Symbol) = { - val id = Ident(vparam) - if (vparam.tpe.typeSymbol == RepeatedParamClass) Typed(id, Ident(nme.WILDCARD_STAR.toTypeName)) - else id - } - val caseFactoryDef = - localTyper.typed { - atPos(tree.pos) { - DefDef( - factory, - vparamss => - (toConstructor(tree.pos, factory.tpe) /: vparamss) { - (fn, vparams) => Apply(fn, vparams map mkArgument) - }) - } - } - List(transform(tree), caseFactoryDef) - } - case ValDef(_, _, _, _) => val tree1 = transform(tree); // important to do before forward reference check val ValDef(_, _, _, rhs) = tree1 |