Another problem:
5) We have been using promote_type to find out the type returned by a
promote_rule we defined, which has mostly worked fine, oddly enough. But
now that I realise that's not what promote_type is for, I switched to using
promote_rule instead, since it just returns Union{} if there is no
promote_rule for the supplied types. But this doesn't work in Nemo.
Even though we have an explicit promote rule (not generated at runtime)
Base.promote_rule{T <: Integer}(::Type{fmpz_poly}, ::Type{T}) = fmpz_poly
a call to Base.promote_rule(fmpz_poly, Int) inside Nemo returns Union{}.
However, such a call from the REPL results in Nemo.fmpz_poly.
There's clearly something broken here. I need to be able to explicitly tell
if the promote_rules that I create actually exist or not. At present I only
seem to be able to do that from the REPL, not inside my actual module.
Bill.