From bff3666d604972f1f38f15c49388cd39d08bee88 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 18 Mar 2024 13:53:03 -0400 Subject: Don't print dollar signs in string representations of structs --- structs.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'structs.c') diff --git a/structs.c b/structs.c index 4888cc54..cebc9a77 100644 --- a/structs.c +++ b/structs.c @@ -39,13 +39,16 @@ static CORD compile_str_method(env_t *env, ast_t *ast) { auto def = Match(ast, StructDef); CORD full_name = CORD_cat(env->file_prefix, def->name); + const char *name = def->name; + const char *dollar = strrchr(name, '$'); + if (dollar) name = dollar + 1; CORD str_func = CORD_asprintf("static CORD %r$as_text(%r_t *obj, bool use_color) {\n" - "\tif (!obj) return \"%s\";\n", full_name, full_name, def->name); + "\tif (!obj) return \"%s\";\n", full_name, full_name, name); if (def->secret) { CORD_appendf(&str_func, "\treturn use_color ? \"\\x1b[0;1m%s\\x1b[m(\\x1b[2m...\\x1b[m)\" : \"%s(...)\";\n}", - def->name, def->name); + name, name); } else { - CORD_appendf(&str_func, "\treturn CORD_all(use_color ? \"\\x1b[0;1m%s\\x1b[m(\" : \"%s(\"", def->name, def->name); + CORD_appendf(&str_func, "\treturn CORD_all(use_color ? \"\\x1b[0;1m%s\\x1b[m(\" : \"%s(\"", name, name); for (arg_ast_t *field = def->fields; field; field = field->next) { type_t *field_type = get_arg_ast_type(env, field); CORD field_str = expr_as_text(env, CORD_cat("obj->", field->name), field_type, "use_color"); -- cgit v1.2.3