summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-01-17 16:37:27 +0000
committerMartin Odersky <odersky@gmail.com>2008-01-17 16:37:27 +0000
commit76c06b4661b70e934530a0debad34a5766ee43e9 (patch)
tree4abb85699a2d663681a9ca31fb7ccff45b80746f /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
parente5ca1a3906ae29c1d6db5de333932bbfc189cedc (diff)
downloadscala-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.scala31
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