Fix attr_reader-generated methods accepting extra arguments

attr_reader-generated getter methods silently ignored any arguments
passed to them. CRuby raises ArgumentError in this case.

Add mrb_get_args(mrb, "") to enforce zero arguments, matching CRuby.
This commit is contained in:
Chris Hasiński
2026-03-19 23:11:59 +01:00
parent a41eeaed33
commit c0b1e87c09
2 changed files with 4 additions and 0 deletions
+1
View File
@@ -2776,6 +2776,7 @@ mod_attr_define(mrb_state *mrb, mrb_value mod, mrb_value (*accessor)(mrb_state*,
static mrb_value
attr_reader(mrb_state *mrb, mrb_value obj)
{
mrb_get_args(mrb, "");
mrb_value name = mrb_proc_cfunc_env_get(mrb, 0);
return mrb_iv_get(mrb, obj, to_sym(mrb, name));
}
+3
View File
@@ -163,6 +163,9 @@ assert('Module#attr_reader', '15.2.2.4.13') do
AttrTestReader.cattr_val = 'test'
assert_equal 'test', AttrTestReader.cattr
assert_raise(ArgumentError) { attr_instance.iattr(1) }
assert_raise(ArgumentError) { attr_instance.iattr(1, 2, 3) }
end
assert('Module#attr_writer', '15.2.2.4.14') do