ZMQ.jl's Message type breaks tab completion:
using ZMQ
z = ZMQ.Message()
z.<TAB>
results in:
julia> z.โ Error: Error in the keymap
โ exception =
โ MethodError: no method matching iterate(::Symbol)
โ Closest candidates are:
โ iterate(::Base.EnvDict) at env.jl:119
โ iterate(::Base.EnvDict, ::Any) at env.jl:119
โ iterate(::ExponentialBackOff) at error.jl:252
โ ...
โ Stacktrace:
โ [1] complete_symbol(::String, ::REPL.REPLCompletions.var"#21#25", ::Module) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/REPLCompletions.jl:147
โ [2] completions(::String, ::Int64, ::Module) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/REPLCompletions.jl:716
โ [3] completions(::String, ::Int64) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/REPLCompletions.jl:580
โ [4] complete_line(::REPL.REPLCompletionProvider, ::Any) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:462
โ [5] complete_line(::REPL.LineEdit.PromptState, ::Any) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:329
โ [6] complete_line(::REPL.LineEdit.MIState) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:320
โ [7] edit_tab(::REPL.LineEdit.MIState, ::Any, ::Any) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:2032 (repeats 2 times)
โ [8] (::REPL.LineEdit.var"#109#162")(::Any, ::Any, ::Vararg{Any,N} where N) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:2073
โ [9] #invokelatest#1 at ./essentials.jl:710 [inlined]
โ [10] invokelatest at ./essentials.jl:709 [inlined]
โ [11] (::REPL.LineEdit.var"#22#23"{REPL.LineEdit.var"#109#162",String})(::Any, ::Any) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:1364
โ [12] prompt!(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:2446
โ [13] run_interface(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:2349
โ [14] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at /Users/sabae/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:1141
โ [15] (::REPL.var"#36#40"{REPL.LineEditREPL,REPL.REPLBackendRef})() at ./task.jl:358
โ @ REPL.LineEdit ~/tmp/julia-build/julia-master/usr/share/julia/stdlib/v1.5/REPL/src/LineEdit.jl:2448
This is happening consistently on Julia v1.4, v1.5 and latest master. The version of ZMQ installed is v1.2.0.
I'd guess this is a ZMQ bug:
Base.propertynames(zmsg::Message) = (:more)
That is missing a comma. It should return a tuple.
The REPL should be robust to this, I think.
Most helpful comment
The REPL should be robust to this, I think.