--- /dev/null
+Before:
+ function! Func0()
+ endfunction
+ function! Func1(x)
+ endfunction
+ function! Func2(x,y)
+ endfunction
+ function! Func3(x,y,z)
+ endfunction
+ function! Func3a(x,y,z,...)
+ endfunction
+
+After:
+ delfunction Func0
+ delfunction Func1
+ delfunction Func2
+ delfunction Func3
+ delfunction Func3a
+
+Execute(We should be able to compute the argument count for function names):
+ AssertEqual 0, ale#util#FunctionArgCount('Func0')
+ AssertEqual 1, ale#util#FunctionArgCount('Func1')
+ AssertEqual 2, ale#util#FunctionArgCount('Func2')
+ AssertEqual 3, ale#util#FunctionArgCount('Func3')
+ AssertEqual 3, ale#util#FunctionArgCount('Func3a')
+
+Execute(We should be able to compute the argument count for Funcrefs):
+ AssertEqual 0, ale#util#FunctionArgCount(function('Func0'))
+ AssertEqual 1, ale#util#FunctionArgCount(function('Func1'))
+ AssertEqual 2, ale#util#FunctionArgCount(function('Func2'))
+ AssertEqual 3, ale#util#FunctionArgCount(function('Func3'))
+ AssertEqual 3, ale#util#FunctionArgCount(function('Func3a'))
+
+Execute(We should be able to compute the argument count for lambdas):
+ if has('lambda')
+ AssertEqual 0, ale#util#FunctionArgCount({->1})
+ AssertEqual 1, ale#util#FunctionArgCount({x->1})
+ AssertEqual 2, ale#util#FunctionArgCount({x,y->1})
+ AssertEqual 3, ale#util#FunctionArgCount({x,y,z->1})
+ AssertEqual 3, ale#util#FunctionArgCount({x,y,z,...->1})
+ endif
+
+Execute(We should be able to compute the argument count autoload functions not yet loaded):
+ AssertEqual 1, ale#util#FunctionArgCount(function('ale#fixers#yapf#Fix'))
+ AssertEqual 1, ale#util#FunctionArgCount('ale#fixers#yapf#Fix')