diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-04-19 20:14:23 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-04-19 20:14:23 +0900 |
| commit | 4a8b88f7757f71d7d88b89764b533dd5ba59fd44 (patch) | |
| tree | ca3a11f4ddd74d86054a9ef0adfa776823c9f333 /test | |
| parent | 05f65d2d429fcc5ff6bf5f2f8729fcb5de63b2ca (diff) | |
| download | mruby-4a8b88f7757f71d7d88b89764b533dd5ba59fd44.tar.gz mruby-4a8b88f7757f71d7d88b89764b533dd5ba59fd44.zip | |
Add type check (conversion) in `String#[]=`
Before this patch:
'a'[0] = 1 #=> 1
'a'[:a] = '1' #=> ArgumentError
'a'[:a, 0] = '1' #=> ArgumentError
'a'[0, :a] = '1' #=> ArgumentError
'a'[0, 1] = 1 #=> 1
After this patch / Ruby:
'a'[0] = 1 #=> TypeError
'a'[:a] = '1' #=> TypeError
'a'[:a, 0] = '1' #=> TypeError
'a'[0, :a] = '1' #=> TypeError
'a'[0, 1] = 1 #=> TypeError
Diffstat (limited to 'test')
| -rw-r--r-- | test/t/string.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/test/t/string.rb b/test/t/string.rb index cf3702cbe..404cf03e1 100644 --- a/test/t/string.rb +++ b/test/t/string.rb @@ -161,6 +161,9 @@ assert('String#[]=') do assert_equal 'aXc', e end + assert_raise(TypeError) { 'a'[0] = 1 } + assert_raise(TypeError) { 'a'[:a] = '1' } + # length of args is 2 a1 = 'abc' assert_raise(IndexError) do @@ -197,6 +200,10 @@ assert('String#[]=') do assert_raise(IndexError) do b3['XX'] = 'Y' end + + assert_raise(TypeError) { 'a'[:a, 0] = '1' } + assert_raise(TypeError) { 'a'[0, :a] = '1' } + assert_raise(TypeError) { 'a'[0, 1] = 1 } end assert('String#capitalize', '15.2.10.5.7') do |
