Closed
Description
MRE:
function Base.iterate(::Nothing)
end
mutable struct TrieSet{K} <: AbstractSet{AbstractArray{K}}
dict::Dict{K, TrieSet{K}}
value::Bool
function TrieSet{K}() where K
new(Dict{K, TrieSet{K}}(), false)
end
end
function walk(trie::TrieSet{K}, f, prefix=Vector{K}()) where K
if trie.value
f(prefix)
end
for (char, subtrie) in trie.dict
walk(subtrie, f, vcat(prefix, char))
end
end
function Base.push!(trie::TrieSet{K}, key) where K
for char in key
if trie.dict == nothing
trie.dict = Dict{K, TrieSet{K}}(char => TrieSet{K}())
elseif !haskey(trie.dict, char)
trie.dict[char] = TrieSet{K}()
end
trie = trie.dict[char]
end
trie.value = true
end
function getsubtrie(trie::TrieSet{K}, key) where K
prefix = Vector{K}()
for char in key
if trie.dict == nothing || !haskey(trie.dict, char)
return nothing
end
push!(prefix, char)
trie = trie.dict[char]
end
return trie, prefix
end
struct PrefixTrieSet{K} <: AbstractSet{AbstractArray{K}}
subtrie::TrieSet{K}
prefix::Vector{K}
function PrefixTrieSet{K}(trie, prefix) where K
new(getsubtrie(trie, prefix)...)
end
end
function keys(trie::PrefixTrieSet{K}) where K
result = Vector{Vector{K}}()
walk(trie.subtrie, x -> push!(result, x), trie.prefix)
return result
end
set = TrieSet{Char}()
push!(set, "a")
keys(PrefixTrieSet{Char}(set, "a"))
Trace back running the program on 1.6.3:
Internal error: encountered unexpected error in runtime:
BoundsError(a=svec(), i=0)
getindex at .\essentials.jl:589 [inlined]
unswitchtupleunion at .\compiler\typeutils.jl:219
getfield_elim_pass! at .\compiler/ssair\passes.jl:624
run_passes at .\compiler/ssair\driver.jl:133
optimize at .\compiler\optimize.jl:272 [inlined]
_typeinf at .\compiler\typeinfer.jl:244
typeinf at .\compiler\typeinfer.jl:209
typeinf_ext at .\compiler\typeinfer.jl:892
typeinf_ext_toplevel at .\compiler\typeinfer.jl:925
typeinf_ext_toplevel at .\compiler\typeinfer.jl:921
jfptr_typeinf_ext_toplevel_14355.clone_1 at C:\Users\Win10\AppData\Local\Programs\Julia-1.6.3\lib\julia\sys.dll (unknown line)
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2237 [inlined]
jl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2419 [inlined]
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_type_infer at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:298
jl_generate_fptr at /cygdrive/c/buildbot/worker/package_win64/build/src\jitlayers.cpp:340
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1970
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:1924 [inlined]
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2229 [inlined]
jl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2419
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
top-level scope at C:\Users\Win10\source\repos\julia\reduce internal runtime error\src\problem.jl:61
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:825
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1116
_include at .\loading.jl:1170
include at .\client.jl:444
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
top-level scope at none:1
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
repleval at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:198
#242 at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:228
unknown function (ip: 000000005b418dd3)
with_logstate at .\logging.jl:491
with_logger at .\logging.jl:603 [inlined]
evalrepl at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:216
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:576
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:670
top-level scope at C:\Users\Win10\.julia\packages\Atom\bfwsW\src\repl.jl:264
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:877
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:886 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:929
eval at .\boot.jl:360 [inlined]
eval_user_input at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:139
repl_backend_loop at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:200
start_repl_backend at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:185
#run_repl#42 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:317
run_repl at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\REPL\src\REPL.jl:305
#874 at .\client.jl:387
jfptr_YY.874_32319.clone_1 at C:\Users\Win10\AppData\Local\Programs\Julia-1.6.3\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
jl_f__call_latest at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:714
#invokelatest#2 at .\essentials.jl:708 [inlined]
invokelatest at .\essentials.jl:706 [inlined]
run_main_repl at .\client.jl:372
exec_options at .\client.jl:302
_start at .\client.jl:485
jfptr__start_22917.clone_1 at C:\Users\Win10\AppData\Local\Programs\Julia-1.6.3\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
true_main at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:560
repl_entrypoint at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:702
mainCRTStartup at /cygdrive/c/buildbot/worker/package_win64/build/cli\loader_exe.c:51
BaseThreadInitThunk at C:\Windows\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\Windows\SYSTEM32\ntdll.dll (unknown line)
Further observations: the program doesn't crash after the trace back. The trace back vanishes, if I remove Base.iterate(::Nothing)
.
Metadata
Metadata
Assignees
Labels
No labels