diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-09-03 09:00:52 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-09-03 09:00:52 +0000 |
| commit | c29e1b147e52ad81554d94a422210f1c1ff97d9e (patch) | |
| tree | b169cc7c3b4f2dd17e6a0d768ba75e1a982632bd /eval.c | |
| parent | e5ff3095ddac2d15b49b8beb24d412d167d7f053 (diff) | |
| download | ruby-c29e1b147e52ad81554d94a422210f1c1ff97d9e.tar.gz ruby-c29e1b147e52ad81554d94a422210f1c1ff97d9e.tar.xz ruby-c29e1b147e52ad81554d94a422210f1c1ff97d9e.zip | |
* struct.c (make_struct): remove redefining constant when
conflict. [ruby-dev:24210]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@6854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
| -rw-r--r-- | eval.c | 34 |
1 files changed, 2 insertions, 32 deletions
@@ -1715,37 +1715,6 @@ rb_eval_cmd(cmd, arg, level) return val; } -static VALUE -superclass(self, node) - VALUE self; - NODE *node; -{ - VALUE val = Qnil; /* OK */ - int state; - - PUSH_TAG(PROT_NONE); - if ((state = EXEC_TAG()) == 0) { - val = rb_eval(self, node); - } - POP_TAG(); - if (state) { - switch (nd_type(node)) { - case NODE_COLON2: - rb_raise(rb_eTypeError, "undefined superclass `%s'", - rb_id2name(node->nd_mid)); - case NODE_CONST: - rb_raise(rb_eTypeError, "undefined superclass `%s'", - rb_id2name(node->nd_vid)); - default: - break; - } - JUMP_TAG(state); - } - rb_check_inheritable(val); - - return val; -} - #define ruby_cbase (ruby_cref->nd_clss) static VALUE @@ -3792,7 +3761,8 @@ rb_eval(self, n) rb_raise(rb_eTypeError, "no outer class/module"); } if (node->nd_super) { - super = superclass(self, node->nd_super); + super = rb_eval(self, node->nd_super); + rb_check_inheritable(super); } else { super = 0; |
