Pkg.jl icon indicating copy to clipboard operation
Pkg.jl copied to clipboard

`]compat` REPL menu throws when pressing backspace one too many times

Open LilithHafner opened this issue 4 months ago • 1 comments

Conjectured problem: When editing compat entries, the UI lets me press backspace one to many times, deleting the entire string and one additional character. This causes a bounds error when I type a new character.

Keystrokes: ]compat[enter][enter][backspace][backspace][space]

Result:

Chairmarks) pkg> compat
      Compat `~/.julia/dev/Chairmarks/Project.toml`
  Select an entry to edit:
 >            julia         1
   [de0858da] Printf        <0.0.1, 1
   [9e88b42a] Serialization 1.11.0
  Edit compat entry for julia:ERROR: BoundsError: attempt to access empty String at index [0:0]
Stacktrace:
  [1] checkbounds
    @ ./strings/basic.jl:216 [inlined]
  [2] getindex(s::String, r::UnitRange{Int64})
    @ Base ./strings/string.jl:468
  [3] compat(ctx::Pkg.Types.Context; io::Nothing)
    @ Pkg.API ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:2065
  [4] compat
    @ ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:1986 [inlined]
  [5] compat()
    @ Pkg.API ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:2109
  [6] do_cmd!(command::Pkg.REPLMode.Command, repl::REPL.LineEditREPL)
    @ Pkg.REPLMode ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/REPLMode/REPLMode.jl:409
  [7] do_cmd(repl::REPL.LineEditREPL, input::String; do_rethrow::Bool)
    @ Pkg.REPLMode ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/REPLMode/REPLMode.jl:390
  [8] do_cmd
    @ ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/REPLMode/REPLMode.jl:380 [inlined]
  [9] (::Pkg.REPLMode.var"#24#27"{REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::IOBuffer, ok::Bool)
    @ Pkg.REPLMode ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/REPLMode/REPLMode.jl:557
 [10] #invokelatest#2
    @ ./essentials.jl:892 [inlined]
 [11] invokelatest
    @ ./essentials.jl:889 [inlined]
 [12] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/LineEdit.jl:2656
 [13] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:1312
 [14] (::REPL.var"#62#68"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL ~/.julia/juliaup/julia-1.10.2+0.aarch64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:386

Present in 1.10.2 and 1.11.0-alpha0

LilithHafner avatar Mar 05 '24 16:03 LilithHafner