summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-10-13 06:44:42 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-10-13 06:44:42 +0000
commit2e23ebc601fd5c8d7de232e470e2374df8888d11 (patch)
tree15b69a971374cd5d1fd5413ba6d9d659f56c27f0 /parse.y
parentbe1fea072cd0d22788ef8a931c0c6b64a2503b5d (diff)
*** empty log message ***
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y10
1 files changed, 10 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 5e516d2751..3365df4676 100644
--- a/parse.y
+++ b/parse.y
@@ -1182,8 +1182,18 @@ primary : literal
}
f_arglist
compstmt
+ rescue
+ opt_else
+ ensure
kEND
{
+ if ($6) $5 = NEW_RESCUE($5, $6, $7);
+ else if ($7) {
+ rb_warn("else without rescue is useless");
+ $5 = block_append($5, $7);
+ }
+ if ($8) $5 = NEW_ENSURE($5, $8);
+
/* NOEX_PRIVATE for toplevel */
$$ = NEW_DEFN($2, $4, $5, class_nest?0:1);
fixpos($$, $4);