Yep I'll open an issue with Simons example. I had another issue which hadn't narrowed down the problem which I'll replace
Sent from my iPhone > On 26 Jun 2015, at 12:55 pm, Stefan Karpinski <[email protected]> wrote: > > Yes – adding a normal method should never segfault. Can you open an issue? > >> On Thu, Jun 25, 2015 at 6:33 PM, Sheehan Olver <[email protected]> wrote: >> 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.. >
