diff options
| author | KOBAYASHI Shuji <[email protected]> | 2021-02-12 19:09:18 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2021-02-12 19:09:18 +0900 |
| commit | 955464ca3cf408a14ae98b1e93afe31023219af9 (patch) | |
| tree | bf41f788682eb6981b5bdc397eee5e1a12a0bc01 /mrbgems | |
| parent | 2af8e16cc64243503352d02ed62f033e636921da (diff) | |
| download | mruby-955464ca3cf408a14ae98b1e93afe31023219af9.tar.gz mruby-955464ca3cf408a14ae98b1e93afe31023219af9.zip | |
Add `UncaughtThrowError#{tag,value}` for Ruby compatibility
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-catch/mrblib/catch.rb | 8 | ||||
| -rw-r--r-- | mrbgems/mruby-catch/test/catch.rb | 23 |
2 files changed, 19 insertions, 12 deletions
diff --git a/mrbgems/mruby-catch/mrblib/catch.rb b/mrbgems/mruby-catch/mrblib/catch.rb index 8e5f59023..9a60a67a3 100644 --- a/mrbgems/mruby-catch/mrblib/catch.rb +++ b/mrbgems/mruby-catch/mrblib/catch.rb @@ -1,8 +1,8 @@ class UncaughtThrowError < ArgumentError - attr_reader :_tag, :_val - def initialize(tag, val) - @_tag = tag - @_val = val + attr_reader :tag, :value + def initialize(tag, value) + @tag = tag + @value = value super("uncaught throw #{tag.inspect}") end end diff --git a/mrbgems/mruby-catch/test/catch.rb b/mrbgems/mruby-catch/test/catch.rb index fe5bda096..38a4eb907 100644 --- a/mrbgems/mruby-catch/test/catch.rb +++ b/mrbgems/mruby-catch/test/catch.rb @@ -3,10 +3,14 @@ assert "return throw value" do result = catch :foo do loop do loop do - throw :foo, val + begin + throw :foo, val + rescue Exception + flunk("should not reach here 1") + end break end - flunk("should not reach here") + flunk("should not reach here 2") end false end @@ -30,13 +34,16 @@ assert "pass the given tag to block" do catch(tag){|t| assert_same(tag, t)} end -assert "tag identity" do - assert_raise_with_message_pattern(Exception, "uncaught throw *") do - catch [:tag] do - throw [:tag] - end - flunk("should not reach here") +assert "tag identity, uncaught throw" do + tag, val = [:tag], [:val] + catch [:tag] do + throw tag, val end + flunk("should not reach here") +rescue Exception => e + assert_match("uncaught throw *", e.message) + assert_same(tag, e.tag) + assert_same(val, e.value) end assert "without catch arguments" do |
