diff options
author | Nobuyoshi Nakada <[email protected]> | 2020-10-20 19:32:10 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2020-10-20 23:52:19 +0900 |
commit | 081cc4eb283cb01ddffb364397e5175dbfacab66 (patch) | |
tree | be6219891c102c981c0762744eb53488fd7d2205 /node.c | |
parent | d915e7ee0095727e63104c53b1adc7a70bae6522 (diff) |
Dump FrozenCore specially
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -26,7 +26,7 @@ #define A_ID(id) add_id(buf, (id)) #define A_INT(val) rb_str_catf(buf, "%d", (val)) #define A_LONG(val) rb_str_catf(buf, "%ld", (val)) -#define A_LIT(lit) AR(rb_inspect(lit)) +#define A_LIT(lit) AR(rb_dump_literal(lit)) #define A_NODE_HEADER(node, term) \ rb_str_catf(buf, "@ %s (line: %d, location: (%d,%d)-(%d,%d))%s"term, \ ruby_node_name(nd_type(node)), nd_line(node), \ @@ -79,6 +79,25 @@ #define LAST_NODE (next_indent = " ") +VALUE +rb_dump_literal(VALUE lit) +{ + if (!RB_SPECIAL_CONST_P(lit)) { + VALUE str; + switch (RB_BUILTIN_TYPE(lit)) { + case T_CLASS: case T_MODULE: case T_ICLASS: + str = rb_class_path(lit); + if (FL_TEST(lit, FL_SINGLETON)) { + str = rb_sprintf("<%"PRIsVALUE">", str); + } + return str; + default: + break; + } + } + return rb_inspect(lit); +} + static void add_indent(VALUE buf, VALUE indent) { |