summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/ostruct.rb2
-rw-r--r--test/ostruct/test_ostruct.rb2
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 58b99011b4..d3edb059bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun Dec 13 06:40:30 2015 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb: Have OpenStruct#dig raise if argument is not a
+ symbol
+ nor a string. See [#11762]
+
Sun Dec 13 00:05:42 2015 Shugo Maeda <shugo@ruby-lang.org>
* vm_insnhelper.c (vm_call_method_missing): method_missing should
diff --git a/lib/ostruct.rb b/lib/ostruct.rb
index 0e13f40692..84244b3d9e 100644
--- a/lib/ostruct.rb
+++ b/lib/ostruct.rb
@@ -227,7 +227,7 @@ class OpenStruct
begin
name = name.to_sym
rescue NoMethodError
- return
+ raise TypeError, "#{name} is not a symbol nor a string"
end
@table.dig(name, *names)
end
diff --git a/test/ostruct/test_ostruct.rb b/test/ostruct/test_ostruct.rb
index d8d4cd30f0..b098992bc9 100644
--- a/test/ostruct/test_ostruct.rb
+++ b/test/ostruct/test_ostruct.rb
@@ -116,7 +116,7 @@ class TC_OpenStruct < Test::Unit::TestCase
os2.child = [42]
assert_equal :bar, os1.dig("child", :foo)
assert_nil os1.dig("parent", :foo)
- assert_nil os1.dig("child", 0)
+ assert_raise(TypeError) { os1.dig("child", 0) }
end
def test_to_h