summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-05-27 12:23:54 +0000
committerMartin Odersky <odersky@gmail.com>2005-05-27 12:23:54 +0000
commit6e33a303fe231cd4e9ee2246bf4d59bb60db44bb (patch)
tree13c46c26cdff2a078ead170f79e10f9b0a71da9a /sources/scala/tools/nsc/typechecker/Typers.scala
parent08caefd4e04d42817c95e272bb3fb65770d6f015 (diff)
downloadscala-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-xsources/scala/tools/nsc/typechecker/Typers.scala22
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;
}