mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* compile.c (defined_expr): test arguments of NODE_CALL and so
on as well as NODE_ATTRASGN. [ruby-core:10886] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
31088109b7
commit
e12090b9b2
3 changed files with 15 additions and 7 deletions
11
compile.c
11
compile.c
|
@ -2031,8 +2031,9 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
|
|||
NODE * node, LABEL *lfinish, VALUE needstr)
|
||||
{
|
||||
char *estr = 0;
|
||||
enum node_type type;
|
||||
|
||||
switch (nd_type(node)) {
|
||||
switch (type = nd_type(node)) {
|
||||
|
||||
/* easy literals */
|
||||
case NODE_NIL:
|
||||
|
@ -2146,15 +2147,17 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
|
|||
LABEL *lfalse = NULL;
|
||||
int self = Qtrue;
|
||||
|
||||
switch (nd_type(node)) {
|
||||
switch (type) {
|
||||
case NODE_ATTRASGN:
|
||||
lfalse = NEW_LABEL(nd_line(node));
|
||||
defined_expr(iseq, ret, node->nd_args, lfinish, Qfalse);
|
||||
if (node->nd_recv == (NODE *)1) break;
|
||||
case NODE_CALL:
|
||||
self = Qfalse;
|
||||
break;
|
||||
}
|
||||
if (node->nd_args) {
|
||||
lfalse = NEW_LABEL(nd_line(node));
|
||||
defined_expr(iseq, ret, node->nd_args, lfinish, Qfalse);
|
||||
}
|
||||
if (!self) {
|
||||
LABEL *lcont = NEW_LABEL(nd_line(node));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue