From e3fdf97df2ce1ea7cd3a98cbdcce53789db1b3d3 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Tue, 17 Dec 2013 15:52:58 +0100 Subject: Bringing isFunctionType in line with isTupleType --- src/dotty/tools/dotc/core/Definitions.scala | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/dotty/tools/dotc/core/Definitions.scala') diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala index 49e038a1e..ebd99ad6c 100644 --- a/src/dotty/tools/dotc/core/Definitions.scala +++ b/src/dotty/tools/dotc/core/Definitions.scala @@ -288,8 +288,6 @@ class Definitions(implicit ctx: Context) { } } - def isFunctionType(tp: Type) = FunctionClasses contains tp.typeSymbol - // ----- Symbol sets --------------------------------------------------- lazy val FunctionClass = mkArityArray("Function", MaxFunctionArity, 0) @@ -320,7 +318,12 @@ class Definitions(implicit ctx: Context) { arity <= MaxTupleArity && (tp isRef TupleClass(arity)) } - // ----- Higher kinds machinery ------------------------------------------ + def isFunctionType(tp: Type) = { + val arity = tp.dealias.typeArgs.length - 1 + 0 <= arity && arity <= MaxFunctionArity && (tp isRef FunctionClass(arity)) + } + + // ----- Higher kinds machinery ------------------------------------------ private var _hkTraits: Set[Symbol] = Set() -- cgit v1.2.3