diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2020-01-14 14:11:34 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2020-01-14 14:11:34 -0500 |
commit | c2e28acbb73e9c9c4a720664cbeb6b8eb6d4c978 (patch) | |
tree | 8d85413fb0ddb09e0572e5321f4c9425cd5243fe | |
parent | 7acba740b69b690faf7db621ae2b7d1cd69d3766 (diff) |
improved C names of exported things
-rw-r--r-- | cgen.c | 8 | ||||
-rw-r--r-- | decls_cgen.c | 21 | ||||
-rw-r--r-- | misc.c | 1 | ||||
-rw-r--r-- | test.toc | 1 |
4 files changed, 8 insertions, 23 deletions
@@ -281,10 +281,14 @@ static bool cgen_uses_ptr(Type *t) { } static void cgen_ident(CGenerator *g, Identifier i) { + if (i->export_id) { + cgen_write(g, "%s__", g->pkg_prefix); + } if (i == g->main_ident) { /* don't conflict with C's main! */ cgen_write(g, "main__"); } else { + cgen_indent(g); fprint_ident_reduced_charset(cgen_writing_to(g), i); } @@ -488,10 +492,6 @@ static bool cgen_fn_header(CGenerator *g, FnExpr *f, Location where, U64 instanc if (!cgen_type_pre(g, &f->ret_type, where)) return false; cgen_write(g, " "); } - if (f->export.id) { - assert(g->pkg_prefix); - cgen_write(g, "%s__", g->pkg_prefix); - } cgen_full_fn_name(g, f, instance); if (!out_param) { if (!cgen_type_post(g, &f->ret_type, where)) return false; diff --git a/decls_cgen.c b/decls_cgen.c index ddb9540..b2ff8a3 100644 --- a/decls_cgen.c +++ b/decls_cgen.c @@ -51,15 +51,6 @@ static bool cgen_fn_decl(CGenerator *g, FnExpr *f, Location where, U64 instance, cgen_write(g, ";"); cgen_nl(g); fn_exit(f); - char *pkg_name = g->evalr->typer->pkg_name; - if (pkg_name && f->export.id) { - /* allow use of function without referring to package in this file */ - cgen_write(g, "#define "); - cgen_full_fn_name(g, f, instance); - cgen_write(g, " %s__", pkg_name); - cgen_full_fn_name(g, f, instance); - cgen_nl(g); - } } return true; } @@ -153,26 +144,18 @@ static bool cgen_decls_decl(CGenerator *g, Declaration *d) { Identifier ident = d->idents[i]; Type *type = decl_type_at_index(d, i); if (!type_is_compileonly(type)) { - if (ident->export_name) + if (ident->export_name) { cgen_write(g, "extern "); - else + } else cgen_write(g, "static "); if (!cgen_type_pre(g, type, d->where)) return false; cgen_write(g, " "); - if (ident->export_name) { - cgen_write(g, "%s__", g->pkg_prefix); - } cgen_ident(g, ident); if (!cgen_type_post(g, type, d->where)) return false; cgen_write(g, ";"); cgen_nl(g); - cgen_write(g, "#define "); - cgen_ident(g, ident); - cgen_write(g, " %s__", g->pkg_prefix); - cgen_ident(g, ident); - cgen_nl(g); } } } @@ -52,3 +52,4 @@ static U32 rand_u32(U32 seed) { U64 seed64 = (U64)seed; return (U32)((seed64 * 0x832f0fda4e1a8642 + 0x41d49cd5459a2ab4) >> 32); } + @@ -13,4 +13,5 @@ point ::= pkg "point"; main ::= fn() { x : point.Point = point.mk_point(13, 14); + puti(x.x + x.y); };
\ No newline at end of file |