summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-28 06:23:16 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-28 06:23:16 +0000
commit7a929727f6a4e45a0ebf0542650ff122b16264ad (patch)
treeadc7ce832f84e2c5ce96471efaf67198fb59fa87
parent30b72f98f791ffa257ac74ae228c1c069fdd34dd (diff)
error.c: rb_name_err_new
* error.c (rb_name_err_new): new function to create NameError exception instance. [Feature #10881] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--error.c10
-rw-r--r--internal.h5
3 files changed, 20 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c507fc5265..e730e8f098 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Oct 28 15:23:14 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_name_err_new): new function to create NameError
+ exception instance. [Feature #10881]
+
Wed Oct 28 13:29:39 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (new_attr_op_assign): fix op_assign type, which is
diff --git a/error.c b/error.c
index 9dac198ae1..7d533cc9a5 100644
--- a/error.c
+++ b/error.c
@@ -1189,6 +1189,16 @@ rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method)
return result;
}
+VALUE
+rb_name_err_new(VALUE mesg, VALUE recv, VALUE method)
+{
+ VALUE exc = rb_obj_alloc(rb_eNameError);
+ rb_ivar_set(exc, id_mesg, rb_name_err_mesg_new(mesg, recv, method));
+ rb_ivar_set(exc, id_bt, Qnil);
+ rb_ivar_set(exc, id_name, method);
+ return exc;
+}
+
/* :nodoc: */
static VALUE
name_err_mesg_equal(VALUE obj1, VALUE obj2)
diff --git a/internal.h b/internal.h
index 094e4a2462..b5f40987f3 100644
--- a/internal.h
+++ b/internal.h
@@ -739,6 +739,11 @@ const char *rb_builtin_class_name(VALUE x);
PRINTF_ARGS(void rb_enc_warn(rb_encoding *enc, const char *fmt, ...), 2, 3);
PRINTF_ARGS(void rb_enc_warning(rb_encoding *enc, const char *fmt, ...), 2, 3);
PRINTF_ARGS(void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...), 2, 3);
+VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
+#define rb_name_err_raise_str(mesg, recv, name) \
+ rb_exc_raise(rb_name_err_new(mesg, recv, name))
+#define rb_name_err_raise(mesg, recv, name) \
+ rb_name_err_raise_str(rb_fstring_cstr(mesg), (recv), (name))
/* eval.c */
VALUE rb_refinement_module_get_refined_class(VALUE module);