aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-22 08:31:33 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-22 08:31:33 +0000
commit225cd9f109ee4918d00c1b57f8e77b82c1321202 (patch)
tree0cd5ee9fc5d3be4d8d9f1150c7333ada6bd8a2e1
parent48b24fe53608844aa46a51e6e965b43c00e94a19 (diff)
downloadruby-225cd9f109ee4918d00c1b57f8e77b82c1321202.tar.gz
* parse.y (opt_rescue): use NODE_ERRINFO() instead of
NODE_GVAR("$!"), to avoid confusion from variable aliasing. [ruby-talk:90074] * version.c (Init_version): remove obsolete constants VERSION etc. [ruby-dev:22643] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--eval.c3
-rw-r--r--gc.c1
-rw-r--r--node.h2
-rw-r--r--parse.y4
-rw-r--r--version.c5
6 files changed, 17 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 5d2f850cf4..6d7a7a6857 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,15 @@ Thu Jan 22 16:21:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (string_content): reset lexical states at the beginning of
string contents. [ruby-list:39061]
+Thu Jan 22 08:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_rescue): use NODE_ERRINFO() instead of
+ NODE_GVAR("$!"), to avoid confusion from variable aliasing.
+ [ruby-talk:90074]
+
+ * version.c (Init_version): remove obsolete constants VERSION
+ etc. [ruby-dev:22643]
+
Thu Jan 22 01:46:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (newline_node): do not use NODE_NEWLINE node anymore,
diff --git a/eval.c b/eval.c
index 24cf02c9c4..ed7729fcfa 100644
--- a/eval.c
+++ b/eval.c
@@ -2775,6 +2775,9 @@ rb_eval(self, n)
case NODE_FALSE:
RETURN(Qfalse);
+ case NODE_ERRINFO:
+ RETURN(ruby_errinfo);
+
case NODE_IF:
if (trace_func) {
call_trace_func("line", node, self,
diff --git a/gc.c b/gc.c
index b023ad2298..a93900a5e2 100644
--- a/gc.c
+++ b/gc.c
@@ -857,6 +857,7 @@ gc_mark_children(ptr, lev)
case NODE_NIL:
case NODE_TRUE:
case NODE_FALSE:
+ case NODE_ERRINFO:
case NODE_ATTRSET:
case NODE_BLOCK_ARG:
case NODE_POSTEXE:
diff --git a/node.h b/node.h
index e23c3e9ed5..ee953ca198 100644
--- a/node.h
+++ b/node.h
@@ -112,6 +112,7 @@ enum node_type {
NODE_NIL,
NODE_TRUE,
NODE_FALSE,
+ NODE_ERRINFO,
NODE_DEFINED,
NODE_POSTEXE,
#ifdef C_ALLOCA
@@ -330,6 +331,7 @@ typedef struct RNode {
#define NEW_NIL() NEW_NODE(NODE_NIL,0,0,0)
#define NEW_TRUE() NEW_NODE(NODE_TRUE,0,0,0)
#define NEW_FALSE() NEW_NODE(NODE_FALSE,0,0,0)
+#define NEW_ERRINFO() NEW_NODE(NODE_ERRINFO,0,0,0)
#define NEW_DEFINED(e) NEW_NODE(NODE_DEFINED,e,0,0)
#define NEW_PREEXE(b) NEW_SCOPE(b)
#define NEW_POSTEXE() NEW_NODE(NODE_POSTEXE,0,0,0)
diff --git a/parse.y b/parse.y
index 1b0608d8e7..8d3a3cc3e3 100644
--- a/parse.y
+++ b/parse.y
@@ -384,7 +384,7 @@ stmts : none
}
| stmts terms stmt
{
- $$ = block_append($1, $3);
+ $$ = block_append($1, newline_node($3));
}
| error stmt
{
@@ -1858,7 +1858,7 @@ opt_rescue : kRESCUE exc_list exc_var then
opt_rescue
{
if ($3) {
- $3 = node_assign($3, NEW_GVAR(rb_intern("$!")));
+ $3 = node_assign($3, NEW_ERRINFO());
$5 = block_append($3, $5);
}
$$ = NEW_RESBODY($2, $5, $6);
diff --git a/version.c b/version.c
index 54051bb52e..87b9e0ffab 100644
--- a/version.c
+++ b/version.c
@@ -24,11 +24,6 @@ Init_version()
rb_define_global_const("RUBY_VERSION", v);
rb_define_global_const("RUBY_RELEASE_DATE", d);
rb_define_global_const("RUBY_PLATFORM", p);
-
- /* obsolete constants */
- rb_define_global_const("VERSION", v);
- rb_define_global_const("RELEASE_DATE", d);
- rb_define_global_const("PLATFORM", p);
}
void