I would have expected the other branches to be eliminated since :value
is a compile time constant, re Stefan’s comment here How to use `getproperty`/`setproperty!`?.
For example:
const branch = true
example() = branch ? 0.0 : 0
@code_warntype example()
example() “looks” type unstable, but the compiler correctly eliminates the branch and then infers the type, meaning no type instability.
Body::Float64
1 ─ return 0.0
I’m asking why the same isn’t happening here, since (I think) :value
is a compile time constant.