@@ -108,21 +108,17 @@ first_statictype() = error("unresolved dest type")
108
108
109
109
@inline function _broadcast (f, sz:: Size{newsize} , s:: Tuple{Vararg{Size}} , a... ) where newsize
110
110
first_staticarray = first_statictype (a... )
111
+ if prod (newsize) == 0
112
+ # Use inference to get eltype in empty case (see also comments in _map)
113
+ eltys = Tuple{map (eltype, a)... }
114
+ T = Core. Compiler. return_type (f, eltys)
115
+ @inbounds return similar_type (first_staticarray, T, Size (newsize))()
116
+ end
111
117
elements = __broadcast (f, sz, s, a... )
112
118
@inbounds return similar_type (first_staticarray, eltype (elements), Size (newsize))(elements)
113
119
end
114
120
115
121
@generated function __broadcast (f, :: Size{newsize} , s:: Tuple{Vararg{Size}} , a... ) where newsize
116
- if prod (newsize) == 0
117
- # Use inference to get eltype in empty case (see also comments in _map)
118
- eltys = [:(eltype (a[$ i])) for i ∈ 1 : length (a)]
119
- return quote
120
- @_inline_meta
121
- T = Core. Compiler. return_type (f, Tuple{$ (eltys... )})
122
- @inbounds return similar_type ($ first_staticarray, T, Size (newsize))()
123
- end
124
- end
125
-
126
122
sizes = [sz. parameters[1 ] for sz ∈ s. parameters]
127
123
indices = CartesianIndices (newsize)
128
124
exprs = similar (indices, Expr)
0 commit comments