@@ -368,12 +368,15 @@ inferBinder val (ConstructorBinder ctor binders) = do
368 fn' <- introduceSkolemScope <=< replaceAllTypeSynonyms $ fn
368 fn' <- introduceSkolemScope <=< replaceAllTypeSynonyms $ fn
369 go binders fn'
369 go binders fn'
371+ go [] ty' = case (val, ty') of
372+ (TypeConstructor _, TypeApp _ _) -> throwIncorrectArity
371− go [] ty' = do
373+ _ -> do
372− _ <- subsumes Nothing val ty'
374+ _ <- subsumes Nothing val ty'
373− return M.empty
375+ return M.empty
374 go (binder : binders') (TypeApp (TypeApp t obj) ret) | t == tyFunction =
376 go (binder : binders') (TypeApp (TypeApp t obj) ret) | t == tyFunction =
375 M.union <$> inferBinder obj binder <*> go binders' ret
377 M.union <$> inferBinder obj binder <*> go binders' ret
378+ go _ _ = throwIncorrectArity
376− go _ _ = throwError . errorMessage $ IncorrectConstructorArity ctor
379+ throwIncorrectArity = throwError . errorMessage $ IncorrectConstructorArity ctor
377 _ -> throwError . errorMessage $ UnknownDataConstructor ctor Nothing
380 _ -> throwError . errorMessage $ UnknownDataConstructor ctor Nothing
378inferBinder val (ObjectBinder props) = do
381inferBinder val (ObjectBinder props) = do
379 row <- fresh
382 row <- fresh