Type conversion error when switching to a nested module (julia 1.9)

オープン
#59 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
julia
領域
cli

調査の方向性

Julia 1.9 で RemoteREPL 0.2.17 を使ってネストされたモジュールへの切り替えを再現し、その後、369 行目の run_remote_repl_command 周辺にある src/client.jl を調査します。Expr-to-Symbol 変換の失敗を確認し、モジュールコマンドに対応する互換性のある処理を特定します。ネストされたモジュールへの切り替えで MethodError が発生しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

説明

julia versions 1.9.0, 1.9.1
remoterepl 0.2.17

everything generally works fine, the error just pops up when you switch to a nested module
did not occur on julia 1.6, didn't check other versions

julia@localhost> %module A.B
ERROR: MethodError: Cannot `convert` an object of type Expr to an object of type Symbol

Closest candidates are:
  convert(::Type{T}, ::T) where T
   @ Base Base.jl:64
  Symbol(::Any...)
   @ Base strings/basic.jl:229

Stacktrace:
  [1] setproperty!(x::RemoteREPL.Connection, f::Symbol, v::Expr)
    @ Base ./Base.jl:38
  [2] run_remote_repl_command(conn::RemoteREPL.Connection, out_stream::Base.TTY, cmdstr::String)
    @ RemoteREPL ~/.julia/packages/RemoteREPL/BFqrB/src/client.jl:369
  [3] (::RemoteREPL.var"#52#54"{Base.TTY, RemoteREPL.Connection})(c::String)
    @ RemoteREPL ~/.julia/packages/RemoteREPL/BFqrB/src/client.jl:447
  [4] #invokelatest#2
    @ ./essentials.jl:816 [inlined]
  [5] invokelatest
    @ ./essentials.jl:813 [inlined]
  [6] (::REPL.var"#do_respond#80"{Bool, Bool, RemoteREPL.var"#52#54"{Base.TTY, RemoteREPL.Connection}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
    @ REPL ~/julia-1.9.0/share/julia/stdlib/v1.9/REPL/src/REPL.jl:893
  [7] #invokelatest#2
    @ ./essentials.jl:816 [inlined]
  [8] invokelatest
    @ ./essentials.jl:813 [inlined]
  [9] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit ~/julia-1.9.0/share/julia/stdlib/v1.9/REPL/src/LineEdit.jl:2647
 [10] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL ~/julia-1.9.0/share/julia/stdlib/v1.9/REPL/src/REPL.jl:1300
 [11] (::REPL.var"#62#68"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL ./task.jl:514
主要言語
Julia
スター
148
フォーク
17
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

JuliaWeb/RemoteREPL.jl のほかの issue

JuliaWeb/RemoteREPL.jl の issue をすべて見る

似ている issue

Julia の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。