Class: Object
| Relationships & Source Files | |
| Inherits: | BasicObject |
| Defined in: | parse.y |
Instance Method Summary
- #assert_Qundef(obj, msg) Internal use only
- #rawVALUE(obj) Internal use only
- #validate_object(x) Internal use only
Instance Method Details
#assert_Qundef(obj, msg)
This method is for internal use only.
[ GitHub ]
# File 'parse.y', line 12277
static VALUE
ripper_assert_Qundef(VALUE self, VALUE obj, VALUE msg)
{
StringValue(msg);
if (obj == Qundef) {
rb_raise(rb_eArgError, "%"PRIsVALUE, msg);
}
return Qnil;
}
#rawVALUE(obj)
This method is for internal use only.
[ GitHub ]
# File 'parse.y', line 12288
static VALUE
ripper_value(VALUE self, VALUE obj)
{
return ULONG2NUM(obj);
}
#validate_object(x)
This method is for internal use only.
[ GitHub ]
# File 'parse.y', line 11922
static VALUE
ripper_validate_object(VALUE self, VALUE x)
{
if (x == Qfalse) return x;
if (x == Qtrue) return x;
if (x == Qnil) return x;
if (x == Qundef)
rb_raise(rb_eArgError, "Qundef given");
if (FIXNUM_P(x)) return x;
if (SYMBOL_P(x)) return x;
if (!rb_is_pointer_to_heap(x))
rb_raise(rb_eArgError, "invalid pointer: %p", x);
switch (BUILTIN_TYPE(x)) {
case T_STRING:
case T_OBJECT:
case T_ARRAY:
case T_BIGNUM:
case T_FLOAT:
case T_COMPLEX:
case T_RATIONAL:
return x;
case T_NODE:
if (nd_type(x) != NODE_RIPPER) {
rb_raise(rb_eArgError, "NODE given: %p", x);
}
return ((NODE *)x)->nd_rval;
default:
rb_raise(rb_eArgError, "wrong type of ruby object: %p (%s)",
x, rb_obj_classname(x));
}
return x;
}