はじめ
ErrorHighlight
TypeErrorとArgumentErrorの引数を下線表示するようになりました
引用: https://www.ruby-lang.org/ja/news/2022/12/25/ruby-3-2-0-released/
Ruby 3.1から導入された errror_hightligt はエラー箇所を下線部で教えてくれるというものです。
そちらの紹介については以下で紹介しています
今回はそれがRuby 3.2でどう変わったか実際に動かしながら見ていこうと思います
「ワイの間違いをもっと教えてもらわないとな (〇-〇ヽ)クイッ」 ← ハナから間違いしようとすな!
動かしてみる
今回から下線部表示で該当のエラーを表示してくれるようになったエラーは以下の2種類のようです
- TypeError
- ArgumentError
今回動作確認するRubyのバージョンは3.2.1です
TypeError
1 + '2'
型の違うそれぞれの値を加算した場合のエラーが以下の通りになりました
従来(Ruby3.1) のとき
$ ruby sample_2.rb
sample_2.rb:1:in `+': String can't be coerced into Integer (TypeError)
from sample_2.rb:1:in `<main>'
Ruby3.2 のとき
$ ruby sample_2.rb
sample_2.rb:1:in `+': String can't be coerced into Integer (TypeError)
1 + '2'
^^^
from sample_2.rb:1:in `<main>'
ArgumentError
10.to_s(2,2)
to_s(args)
によって引数の進数に変換しつつstring型に変換するメソッドですが、引数を上記の通り過剰に入れて見た場合のエラー内容が以下の通りになりました
従来(Ruby3.1) のとき
$ ruby sample_3.rb
sample_3.rb:1:in `to_s': wrong number of arguments (given 2, expected 0..1) (ArgumentError)
from sample_3.rb:1:in `<main>'
Ruby3.2 のとき
$ ruby sample_3.rb
ruby sample_3.rb
sample_3.rb:1:in `to_s': wrong number of arguments (given 2, expected 0..1) (ArgumentError)
10.to_s(2,2)
^^^
from sample_3.rb:1:in `<main>'
その他
ArgumentError もハイライト表示できるようになりましたが、全てが網羅できているようではなさそうでした。定義したメソッドなどに対してのArgumentErrorなどは既存のものと変わらない表示でした
def hoge(n)
puts n
end
hoge(5,2)
従来(Ruby3.1) のとき
$ ruby sample_4.rb
sample_4.rb:1:in `hoge': wrong number of arguments (given 2, expected 1) (ArgumentError)
from sample_4.rb:5:in `<main>'
Ruby3.2 のとき
$ ruby sample_4.rb
sample_4.rb:1:in `hoge': wrong number of arguments (given 2, expected 1) (ArgumentError)
from sample_4.rb:5:in `<main>'
最後に
今回はRuby3.2によって新しく追加されたエラーのハイライト表示について紹介しました
今回の動作確認する上で使用したコードは以下で公開しておきます!