mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Raise NameError as defined in specification when Struct member isn't found.
This commit is contained in:
@@ -512,7 +512,7 @@ struct_aref_sym(mrb_state *mrb, mrb_value s, mrb_sym id)
|
||||
return ptr[i];
|
||||
}
|
||||
}
|
||||
mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", mrb_sym2str(mrb, id));
|
||||
mrb_name_error(mrb, id, "no member '%S' in struct", mrb_sym2str(mrb, id));
|
||||
return mrb_nil_value(); /* not reached */
|
||||
}
|
||||
|
||||
@@ -560,7 +560,7 @@ mrb_struct_aref(mrb_state *mrb, mrb_value s)
|
||||
mrb_value sym = mrb_check_intern_str(mrb, idx);
|
||||
|
||||
if (mrb_nil_p(sym)) {
|
||||
mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", idx);
|
||||
mrb_name_error(mrb, mrb_intern_str(mrb, idx), "no member '%S' in struct", idx);
|
||||
}
|
||||
idx = sym;
|
||||
}
|
||||
@@ -591,7 +591,7 @@ mrb_struct_aset_sym(mrb_state *mrb, mrb_value s, mrb_sym id, mrb_value val)
|
||||
return val;
|
||||
}
|
||||
}
|
||||
mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", mrb_sym2str(mrb, id));
|
||||
mrb_name_error(mrb, id, "no member '%S' in struct", mrb_sym2str(mrb, id));
|
||||
return val; /* not reach */
|
||||
}
|
||||
|
||||
@@ -630,7 +630,7 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s)
|
||||
mrb_value sym = mrb_check_intern_str(mrb, idx);
|
||||
|
||||
if (mrb_nil_p(sym)) {
|
||||
mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", idx);
|
||||
mrb_name_error(mrb, mrb_intern_str(mrb, idx), "no member '%S' in struct", idx);
|
||||
}
|
||||
idx = sym;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ assert('Struct#[]', '15.2.18.4.2') do
|
||||
assert_equal 2, cc[-1]
|
||||
assert_raise(TypeError) { cc[[]] }
|
||||
assert_raise(IndexError) { cc[2] }
|
||||
assert_raise(NameError) { cc['tama'] }
|
||||
end
|
||||
|
||||
assert('Struct#[]=', '15.2.18.4.3') do
|
||||
@@ -49,6 +50,7 @@ assert('Struct#[]=', '15.2.18.4.3') do
|
||||
assert_equal 5, cc[-1]
|
||||
assert_raise(TypeError) { cc[[]] = 3 }
|
||||
assert_raise(IndexError) { cc[2] = 7 }
|
||||
assert_raise(NameError) { cc['pochi'] = 8 }
|
||||
end
|
||||
|
||||
assert('Struct#each', '15.2.18.4.4') do
|
||||
|
||||
Reference in New Issue
Block a user