For abstract types it is acceptable to return an instance of a subtype, e.g.

convert(Integer, 1.0)

Otherwise, I suspect you are in for all sorts of trouble, e.g.

julia> import Base.convert


julia> immutable Foo

       x::Int

       end


julia> function bar(x)

       y::Foo

       y=x

       end

bar (generic function with 1 method)


julia> convert(::Type{Foo},x::Int) = float(x)

convert (generic function with 518 methods)


julia> bar(1)


signal (11): Segmentation fault: 11


-Simon

On Thursday, 25 June 2015 04:55:07 UTC+1, Sheehan Olver wrote:
>
>
> Is there a guide/good guidelines for overriding Base.convert?  Is it 
> allowed for a convert routine to ever return a different type than 
> requested?  
>
> My overrides (in a fairly deep type hierarchy) seem to be triggering 
> numerous bugs in Julia 0.4, I believe because of issues with type 
> inference.  Right now I just add more overrides to fix the 0.4 bugs as they 
> pop up..
>

Reply via email to