diff --git a/base/reduce.jl b/base/reduce.jl index 6d19fa50e3037..e772929787f5a 100644 --- a/base/reduce.jl +++ b/base/reduce.jl @@ -840,7 +840,7 @@ end ## count -_bool(f::Function) = x->f(x)::Bool +_bool(f) = x->f(x)::Bool """ count(p, itr) -> Integer diff --git a/test/reduce.jl b/test/reduce.jl index 9501f41f8b77c..03aada7d3f3c0 100644 --- a/test/reduce.jl +++ b/test/reduce.jl @@ -468,6 +468,11 @@ end @test count(!iszero, Int[1]) == 1 @test count(!iszero, [1, 0, 2, 0, 3, 0, 4]) == 4 +struct NonFunctionIsZero end +(::NonFunctionIsZero)(x) = iszero(x) +@test count(NonFunctionIsZero(), []) == 0 +@test count(NonFunctionIsZero(), [0]) == 1 +@test count(NonFunctionIsZero(), [1]) == 0 ## cumsum, cummin, cummax