diff options
Diffstat (limited to 'src/dotty')
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 9 |
1 files changed, 6 insertions, 3 deletions
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() |