読者です 読者をやめる 読者になる 読者になる

Crystal は実行時エラーでソース位置がわからなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の2日目の記事です。

qiita.com

Ruby だと実行時にエラーが発生すると、エラーが発生したプログラムの位置が出力されるのですが、

def hoge
  raise "hoge"
end

hoge
% ruby hoge.rb 
hoge.rb:2:in `hoge': hoge (RuntimeError)
    from hoge.rb:5:in `<main>'

Crystal だと、

% crystal hoge.cr 
hoge (Exception)
[4336471] *CallStack::unwind:Array(Pointer(Void)) +87
[4336362] *CallStack#initialize<CallStack>:Array(Pointer(Void)) +10
[4336314] *CallStack::new:CallStack +42
[4339633] *Exception#initialize<Exception, String, Nil>:CallStack +33
[4339569] *Exception::new<String>:Exception +97
[4324214] *raise<String>:NoReturn +6
[4330992] *hoge:NoReturn +16
[4323848] ???
[4330784] main +32
[139889456572992] __libc_start_main +240
[4321241] _start +41
[0] ???

どこでエラーが発生したかわからなくてつらい。