mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* error.c (exc_exception): clone the receiver exception instead of
creating brand new exception object of the receiver. * eval.c (rb_eval_string_wrap): extend new ruby_top_self, not original self. * eval.c (rb_eval_cmd): respect ruby_wrapper if set. * eval.c (eval): do not update ruby_class unless scope is not provided. * eval.c (eval): preserve wrapper information. * eval.c (proc_invoke): ditto. * eval.c (block_pass): ditto. * parse.y (void_expr): too much warnings for void context (e.g. foo[1] that can be mere Proc call). * error.c (rb_name_error): new function to raise NameError with name attribute set. * eval.c (rb_f_missing): set name and args in the exception object. [new] * error.c (name_name): NameError#name - new method. * error.c (nometh_args): NoMethodError#args - new method. * lex.c (rb_reserved_word): lex_state after tRESCUE should be EXPR_MID. * gc.c (add_heap): allocation size of the heap unit is doubled for each allocation. * dir.c (isdelim): space, tab, and newline are no longer delimiters for glob patterns. * eval.c (svalue_to_avalue): new conversion scheme between single value and array values. * eval.c (avalue_to_svalue): ditto. * eval.c (rb_eval): REXPAND now uses avalue_to_svalue(), return and yield too. * eval.c (rb_yield_0): use avalue_to_svalue(). * eval.c (proc_invoke): Proc#call gives avaules, whereas Proc#yield gives mvalues. * eval.c (bmcall): convert given value (svalue) to avalue. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
cc13bb43bc
commit
ffe1cf575e
24 changed files with 374 additions and 164 deletions
11
struct.c
11
struct.c
|
@ -89,7 +89,7 @@ rb_struct_getmember(obj, id)
|
|||
return RSTRUCT(obj)->ptr[i];
|
||||
}
|
||||
}
|
||||
rb_raise(rb_eNameError, "%s is not struct member", rb_id2name(id));
|
||||
rb_name_error(id, "%s is not struct member", rb_id2name(id));
|
||||
return Qnil; /* not reached */
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,8 @@ rb_struct_set(obj, val)
|
|||
return RSTRUCT(obj)->ptr[i] = val;
|
||||
}
|
||||
}
|
||||
rb_raise(rb_eNameError, "not struct member");
|
||||
rb_name_error(rb_frame_last_func(), "`%s' is not a struct member",
|
||||
rb_id2name(rb_frame_last_func()));
|
||||
return Qnil; /* not reached */
|
||||
}
|
||||
|
||||
|
@ -160,7 +161,7 @@ make_struct(name, member, klass)
|
|||
char *cname = StringValuePtr(name);
|
||||
id = rb_intern(cname);
|
||||
if (!rb_is_const_id(id)) {
|
||||
rb_raise(rb_eNameError, "identifier %s needs to be constant", cname);
|
||||
rb_name_error(id, "identifier %s needs to be constant", cname);
|
||||
}
|
||||
nstr = rb_define_class_under(klass, cname, klass);
|
||||
}
|
||||
|
@ -435,7 +436,7 @@ rb_struct_aref_id(s, id)
|
|||
return RSTRUCT(s)->ptr[i];
|
||||
}
|
||||
}
|
||||
rb_raise(rb_eNameError, "no member '%s' in struct", rb_id2name(id));
|
||||
rb_name_error(id, "no member '%s' in struct", rb_id2name(id));
|
||||
return Qnil; /* not reached */
|
||||
}
|
||||
|
||||
|
@ -481,7 +482,7 @@ rb_struct_aset_id(s, id, val)
|
|||
return val;
|
||||
}
|
||||
}
|
||||
rb_raise(rb_eNameError, "no member '%s' in struct", rb_id2name(id));
|
||||
rb_name_error(id, "no member '%s' in struct", rb_id2name(id));
|
||||
}
|
||||
|
||||
VALUE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue