I am having trouble understanding why `fun1`

has a type instability, and not `fun2`

, is this a bug?

```
function fun1(N::Integer, a::Number, test::Bool=false)
if test
b = exp(-abs2(a)/2)
x = [(3b^n+2)/(n+1) for n = 0:N-1]
return x
else
return rand(N)
end
end
function fun2(N::Integer, a::Number, test::Bool=false)
b = exp(-abs2(a)/2)
x = [(3b^n+2)/(n+1) for n = 0:N-1]
return x
end
```

```
julia> @code_warntype fun1(6,2,true)
Variables:
#self#::#fun1
N::Int64
a::Int64
test::Bool
b::Core.Box
x::Any
#13::##13#14
...
```