diff options
author | Paul Phillips <paulp@improving.org> | 2012-09-29 18:00:57 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-09-29 18:05:11 -0700 |
commit | 8886d22cd64e2bf861079873751455aeef9ee7a1 (patch) | |
tree | e0287151d61f392088fc93ed739df3b9aa7b9ccd /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | |
parent | 2e14b0771569b4fb6cd0273e1480f69c18743832 (diff) | |
download | scala-8886d22cd64e2bf861079873751455aeef9ee7a1.tar.gz scala-8886d22cd64e2bf861079873751455aeef9ee7a1.tar.bz2 scala-8886d22cd64e2bf861079873751455aeef9ee7a1.zip |
Fix for SI-5859, inapplicable varargs.
And other polishing related to varargs handling.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 5e1f52830c..4b08f3ee80 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -60,23 +60,8 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans super.transformInfo(sym, tp) } - val toJavaRepeatedParam = new TypeMap { - def apply(tp: Type) = tp match { - case TypeRef(pre, RepeatedParamClass, args) => - typeRef(pre, JavaRepeatedParamClass, args) - case _ => - mapOver(tp) - } - } - - val toScalaRepeatedParam = new TypeMap { - def apply(tp: Type): Type = tp match { - case TypeRef(pre, JavaRepeatedParamClass, args) => - typeRef(pre, RepeatedParamClass, args) - case _ => - mapOver(tp) - } - } + val toJavaRepeatedParam = new SubstSymMap(RepeatedParamClass -> JavaRepeatedParamClass) + val toScalaRepeatedParam = new SubstSymMap(JavaRepeatedParamClass -> RepeatedParamClass) def accessFlagsToString(sym: Symbol) = flagsToString( sym getFlag (PRIVATE | PROTECTED), @@ -1483,8 +1468,11 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans } private def isRepeatedParamArg(tree: Tree) = currentApplication match { case Apply(fn, args) => - !args.isEmpty && (args.last eq tree) && - fn.tpe.params.length == args.length && isRepeatedParamType(fn.tpe.params.last.tpe) + ( args.nonEmpty + && (args.last eq tree) + && (fn.tpe.params.length == args.length) + && isRepeatedParamType(fn.tpe.params.last.tpe) + ) case _ => false } |