summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--version.h2
-rw-r--r--vm_eval.c16
3 files changed, 17 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 8f6097d51..f5300123b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jun 13 07:06:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_catch): updated rdoc about generalized argument,
+ and the case without arguments. [ruby-core:23827]
+
Sat Jun 13 06:45:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_eval.c (rb_f_throw): fixed rdoc about execption.
diff --git a/version.h b/version.h
index a1ec7ff19..0b0f19fb9 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "1.9.1"
#define RUBY_RELEASE_DATE "2009-05-22"
-#define RUBY_PATCHLEVEL 175
+#define RUBY_PATCHLEVEL 176
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1
diff --git a/vm_eval.c b/vm_eval.c
index cbcc55f41..447232771 100644
--- a/vm_eval.c
+++ b/vm_eval.c
@@ -1138,11 +1138,11 @@ NORETURN(static VALUE rb_f_throw _((int, VALUE *)));
/*
* call-seq:
- * throw(symbol [, obj])
+ * throw(tag [, obj])
*
* Transfers control to the end of the active +catch+ block
- * waiting for _symbol_. Raises +ArgumentError+ if there
- * is no +catch+ block for the symbol. The optional second
+ * waiting for _tag_. Raises +ArgumentError+ if there
+ * is no +catch+ block for the _tag_. The optional second
* parameter supplies a return value for the +catch+ block,
* which otherwise defaults to +nil+. For examples, see
* <code>Kernel::catch</code>.
@@ -1198,12 +1198,12 @@ rb_throw_obj(VALUE tag, VALUE val)
/*
* call-seq:
- * catch(symbol) {| | block } > obj
+ * catch([arg]) {|tag| block } => obj
*
* +catch+ executes its block. If a +throw+ is
* executed, Ruby searches up its stack for a +catch+ block
* with a tag corresponding to the +throw+'s
- * _symbol_. If found, that block is terminated, and
+ * _tag_. If found, that block is terminated, and
* +catch+ returns the value given to +throw+. If
* +throw+ is not called, the block terminates normally, and
* the value of +catch+ is the value of the last expression
@@ -1225,6 +1225,12 @@ rb_throw_obj(VALUE tag, VALUE val)
* 2
* 1
* 0
+ *
+ * when _arg_ is given, +catch+ yields it as is, or when no
+ * _arg_ is given, +catch+ assigns a new unique object to
+ * +throw+. this is usefull for nested +catch+. _arg_ can
+ * be an arbitrary object, not only Symbol.
+ *
*/
static VALUE