Is that a bug in Julia that wrongly overloading convert is an unsafe operation?

Sent from my iPad

> On 26 Jun 2015, at 12:22 am, Simon Byrne <[email protected]> wrote:
> 
> 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