summaryrefslogtreecommitdiffstats
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
commit8630dcd2d2ca7a9201ec8317d00bd18a8db4facd (patch)
tree0cd5ee9fc5d3be4d8d9f1150c7333ada6bd8a2e1
parentfc08046ca01ba35170542cbf07681e37c328e7e7 (diff)
downloadruby-8630dcd2d2ca7a9201ec8317d00bd18a8db4facd.tar.gz
ruby-8630dcd2d2ca7a9201ec8317d00bd18a8db4facd.tar.xz
ruby-8630dcd2d2ca7a9201ec8317d00bd18a8db4facd.zip
* 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: http://svn.ruby-lang.org/repos/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 5d2f850cf..6d7a7a685 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 24cf02c9c..ed7729fcf 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 b023ad229..a93900a5e 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 e23c3e9ed..ee953ca19 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 1b0608d8e..8d3a3cc3e 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 54051bb52..87b9e0ffa 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