A repeatable segfault.
```julia
julia> abstract C{T<:Union(Void, Int)}
julia> type D{T} <: C{T} d::T end
julia> D(1.1)
D{Float64}(D{Float64}(#= circular reference =#))
julia> D{Float64}
D{Float64}
julia> D{Float64}()
DERROR: MethodError: `convert` has no method matching
convert(::Type{D{Float64}})
This may have arisen from a call to the constructor D{Float64}(...),
since type constructors fall back to convert methods.
Closest candidates are:
convert{T}(::Type{T}, ::T)
D{T}(, ::Any)
call{T}(::Type{T}, ::Any)
in call at ./essentials.jl:44
julia> D{Float64}(1.2)
D{Float64}(D{Float64}(#= circular reference =#))
julia> D{Float64}(1.1)
D{Float64}(D{Float64}(#= circular reference =#))
julia> d
ERROR: UndefVarError: d not defined
julia> d = D(1.1);
signal (11): 段错误
allocobj at /usr/bin/../lib/julia/libjulia.so (unknown line)
call at ./no file:0
unknown function (ip: 1761710235)
jl_apply_generic at /usr/bin/../lib/julia/libjulia.so (unknown line)
call at ./no file:0
unknown function (ip: 1761718475)
jl_apply_generic at /usr/bin/../lib/julia/libjulia.so (unknown line)
unknown function (ip: 1742009091)
unknown function (ip: 1742004502)
unknown function (ip: 1742005227)
unknown function (ip: 1742010769)
unknown function (ip: 1742011865)
unknown function (ip: 1742087735)
jl_toplevel_eval_in at /usr/bin/../lib/julia/libjulia.so (unknown line)
eval_user_input at ./REPL.jl:62
unknown function (ip: 1761907943)
jl_apply_generic at /usr/bin/../lib/julia/libjulia.so (unknown line)
anonymous at ./task.jl:84
unknown function (ip: 1742033888)
unknown function (ip: 0)
[1] 14452 segmentation fault (core dumped) julia -f
```
Hmmm.
On Sat, Jun 6, 2015 at 2:22 PM, andrew cooke <[email protected]> wrote:
>
> isn't that about repeated use of the same type implying that the "actual"
> type is the intersection fo the two uses?
>
> i only use the type once.
>
> but really, i don't have a clue. if no-one else answers in a while,
> i'llpost a message there asking.
>
> thanks,
> andrew
>
>
> On Saturday, 6 June 2015 15:17:39 UTC-3, Yichao Yu wrote:
>>
>> On Sat, Jun 6, 2015 at 2:15 PM, andrew cooke <[email protected]> wrote:
>> >
>> > Does this make sense to anyone? In 0.3 it works as (I) expected (once
>> > you
>> > change Void to Nothing).
>> >
>> > In 0.4 I have no idea what the float / circular reference thing is.
>> >
>> > _ _ _(_)_ | A fresh approach to technical computing
>> > (_) | (_) (_) | Documentation: http://docs.julialang.org
>> > _ _ _| |_ __ _ | Type "help()" for help.
>> > | | | | | | |/ _` | |
>> > | | |_| | | | (_| | | Version 0.4.0-dev+5232 (2015-06-06 11:26 UTC)
>> > _/ |\__'_|_|_|\__'_| | Commit 37ff0df* (0 days old master)
>> > |__/ | x86_64-suse-linux
>> >
>> > julia> abstract C{T<:Union(Void,Int)}
>> >
>> > julia> type D{T}<:C{T} d::T end
>> >
>> > julia> D(nothing)
>> > D{Void}(nothing)
>> >
>> > julia> D(1)
>> > D{Int64}(1)
>> >
>> > julia> D(1.1)
>> > D{Float64}(D{Float64}(#= circular reference =#))
>>
>> Related to https://github.com/JuliaLang/julia/issues/11597 ?
>>
>> >
>> > (It's not a problem for me; just thought it odd)
>> >
>> > Andrew