diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-03-28 19:56:51 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-03-28 19:56:51 +0900 |
| commit | da2bc9e678d9f2cb4d0402701175e303a55308df (patch) | |
| tree | 26c0f9511cb2afc03d98031aff2e35551353edaf /src | |
| parent | 21b8d20d7e33bc3d39e8759747f0d82e2f479cd2 (diff) | |
| download | mruby-da2bc9e678d9f2cb4d0402701175e303a55308df.tar.gz mruby-da2bc9e678d9f2cb4d0402701175e303a55308df.zip | |
Use `mrb_sym2str` in implementation of `Symbol#to_s`
Diffstat (limited to 'src')
| -rw-r--r-- | src/symbol.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/symbol.c b/src/symbol.c index a7441565a..8ca03344c 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -324,17 +324,9 @@ mrb_init_symtbl(mrb_state *mrb) * :fred.id2name #=> "fred" */ static mrb_value -mrb_sym_to_s(mrb_state *mrb, mrb_value sym) +sym_to_s(mrb_state *mrb, mrb_value sym) { - mrb_sym id = mrb_symbol(sym); - const char *p; - mrb_int len; - - p = mrb_sym2name_len(mrb, id, &len); - if (id&1) { /* inline symbol */ - return mrb_str_new(mrb, p, len); - } - return mrb_str_new_static(mrb, p, len); + return mrb_sym2str(mrb, mrb_symbol(sym)); } /* 15.2.11.3.4 */ @@ -571,13 +563,13 @@ mrb_init_symbol(mrb_state *mrb) { struct RClass *sym; - mrb->symbol_class = sym = mrb_define_class(mrb, "Symbol", mrb->object_class); /* 15.2.11 */ + mrb->symbol_class = sym = mrb_define_class(mrb, "Symbol", mrb->object_class); /* 15.2.11 */ MRB_SET_INSTANCE_TT(sym, MRB_TT_SYMBOL); mrb_undef_class_method(mrb, sym, "new"); - mrb_define_method(mrb, sym, "id2name", mrb_sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.2 */ - mrb_define_method(mrb, sym, "to_s", mrb_sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.3 */ - mrb_define_method(mrb, sym, "to_sym", sym_to_sym, MRB_ARGS_NONE()); /* 15.2.11.3.4 */ - mrb_define_method(mrb, sym, "inspect", sym_inspect, MRB_ARGS_NONE()); /* 15.2.11.3.5(x) */ - mrb_define_method(mrb, sym, "<=>", sym_cmp, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, sym, "id2name", sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.2 */ + mrb_define_method(mrb, sym, "to_s", sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.3 */ + mrb_define_method(mrb, sym, "to_sym", sym_to_sym, MRB_ARGS_NONE()); /* 15.2.11.3.4 */ + mrb_define_method(mrb, sym, "inspect", sym_inspect, MRB_ARGS_NONE()); /* 15.2.11.3.5(x) */ + mrb_define_method(mrb, sym, "<=>", sym_cmp, MRB_ARGS_REQ(1)); } |
