Ripper#validate_object: check if the object is hidden
This commit is contained in:
parent
0b826418af
commit
fd461dea06
9
parse.y
9
parse.y
@ -12498,16 +12498,21 @@ ripper_validate_object(VALUE self, VALUE x)
|
|||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
case T_COMPLEX:
|
case T_COMPLEX:
|
||||||
case T_RATIONAL:
|
case T_RATIONAL:
|
||||||
return x;
|
break;
|
||||||
case T_NODE:
|
case T_NODE:
|
||||||
if (nd_type((NODE *)x) != NODE_RIPPER) {
|
if (nd_type((NODE *)x) != NODE_RIPPER) {
|
||||||
rb_raise(rb_eArgError, "NODE given: %p", (void *)x);
|
rb_raise(rb_eArgError, "NODE given: %p", (void *)x);
|
||||||
}
|
}
|
||||||
return ((NODE *)x)->nd_rval;
|
x = ((NODE *)x)->nd_rval;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
rb_raise(rb_eArgError, "wrong type of ruby object: %p (%s)",
|
rb_raise(rb_eArgError, "wrong type of ruby object: %p (%s)",
|
||||||
(void *)x, rb_obj_classname(x));
|
(void *)x, rb_obj_classname(x));
|
||||||
}
|
}
|
||||||
|
if (!RBASIC_CLASS(x)) {
|
||||||
|
rb_raise(rb_eArgError, "hidden ruby object: %p (%s)",
|
||||||
|
(void *)x, rb_builtin_type_name(TYPE(x)));
|
||||||
|
}
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user