diff options
author | Martin Odersky <odersky@gmail.com> | 2005-05-27 12:23:54 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-05-27 12:23:54 +0000 |
commit | 6e33a303fe231cd4e9ee2246bf4d59bb60db44bb (patch) | |
tree | 13c46c26cdff2a078ead170f79e10f9b0a71da9a /sources/scala/tools/nsc/typechecker/Typers.scala | |
parent | 08caefd4e04d42817c95e272bb3fb65770d6f015 (diff) | |
download | scala-6e33a303fe231cd4e9ee2246bf4d59bb60db44bb.tar.gz scala-6e33a303fe231cd4e9ee2246bf4d59bb60db44bb.tar.bz2 scala-6e33a303fe231cd4e9ee2246bf4d59bb60db44bb.zip |
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/Typers.scala')
-rwxr-xr-x | sources/scala/tools/nsc/typechecker/Typers.scala | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/sources/scala/tools/nsc/typechecker/Typers.scala b/sources/scala/tools/nsc/typechecker/Typers.scala index a413a75476..b5dbaab136 100755 --- a/sources/scala/tools/nsc/typechecker/Typers.scala +++ b/sources/scala/tools/nsc/typechecker/Typers.scala @@ -567,14 +567,14 @@ abstract class Typers: Analyzer { } def typedFunction(fun: Function, mode: int, pt: Type): Function = { - val Triple(clazz, argpts, respt) = pt match { - case TypeRef(_, sym, argtps) - if (fun.vparams.length <= MaxFunctionArity && sym == FunctionClass(fun.vparams.length) || - sym == PartialFunctionClass && fun.vparams.length == 1 && fun.body.isInstanceOf[Match]) => - Triple(sym, argtps.init, argtps.last) - case _ => - Triple(FunctionClass(fun.vparams.length), fun.vparams map (x => NoType), WildcardType) - } + val Triple(clazz, argpts, respt) = + if (isFunctionType(pt) + || + pt.symbol == PartialFunctionClass && + fun.vparams.length == 1 && fun.body.isInstanceOf[Match]) + Triple(pt.symbol, pt.typeArgs.init, pt.typeArgs.last) + else + Triple(FunctionClass(fun.vparams.length), fun.vparams map (x => NoType), WildcardType); val vparamSyms = List.map2(fun.vparams, argpts) { (vparam, argpt) => vparam match { case ValDef(_, _, tpt, _) => @@ -1212,11 +1212,7 @@ abstract class Typers: Analyzer { } def implicitsOfType(tp: Type): List[List[ImplicitInfo]] = { - val tp1 = - if (tp.typeArgs.length - 1 <= MaxFunctionArity && - tp.symbol == FunctionClass(tp.typeArgs.length - 1)) - intersectionType(tp.typeArgs.reverse) - else tp; + val tp1 = if (isFunctionType(tp)) intersectionType(tp.typeArgs.reverse) else tp; tp1.baseClasses map implicitsOfClass; } |