From b7d997e43e4b6f89e5716a7b35b611f4a48523e0 Mon Sep 17 00:00:00 2001 From: Lukas Neubert <40118727+serkonda7@users.noreply.github.com> Date: Wed, 22 Jan 2025 12:13:53 +0100 Subject: [PATCH] gen: remove mix_name usage --- lib/bait/ast/ast.bt | 2 +- lib/bait/checker/fun.bt | 5 +++++ lib/bait/gen/c/comptime.bt | 2 +- lib/bait/gen/c/expr.bt | 4 ++-- lib/bait/gen/c/fun.bt | 16 ++++++++-------- lib/bait/gen/c/stmt.bt | 2 +- lib/bait/gen/js/fun.bt | 8 ++++---- 7 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/bait/ast/ast.bt b/lib/bait/ast/ast.bt index 93db7f53..12eb4d72 100644 --- a/lib/bait/ast/ast.bt +++ b/lib/bait/ast/ast.bt @@ -199,7 +199,7 @@ pub struct BoolLiteral { pub struct CallExpr { global lang Language - pub pkg string + global pkg string global name string global mix_name string // TMP global return_type Type diff --git a/lib/bait/checker/fun.bt b/lib/bait/checker/fun.bt index a049fe06..b7ce47d6 100644 --- a/lib/bait/checker/fun.bt +++ b/lib/bait/checker/fun.bt @@ -155,6 +155,11 @@ fun (mut c Checker) fun_call(mut node ast.CallExpr) ast.Type { } } + // Set package + if node.pkg.length == 0 and obj.pkg != "main" and obj.pkg != "builtin" { + node.pkg = obj.pkg + } + // Check visibility if not obj.is_pub and obj.pkg != c.pkg { c.error("function `${node.full_name()}` is private", node.pos) diff --git a/lib/bait/gen/c/comptime.bt b/lib/bait/gen/c/comptime.bt index 6d5100b0..0b59241c 100644 --- a/lib/bait/gen/c/comptime.bt +++ b/lib/bait/gen/c/comptime.bt @@ -25,7 +25,7 @@ fun (mut g Gen) get_comptime_val(kind token.ComptimeVar, pos token.Pos) string { line := g.get_comptime_val(.line, pos) '${file}:${line}' } - .fun_ { g.cur_fun.mix_name } + .fun_ { g.cur_fun.name } // Cached .baitexe { g.comptime_baitexe() } diff --git a/lib/bait/gen/c/expr.bt b/lib/bait/gen/c/expr.bt index 4d45dbc1..462dab3e 100644 --- a/lib/bait/gen/c/expr.bt +++ b/lib/bait/gen/c/expr.bt @@ -184,7 +184,7 @@ fun (mut g Gen) infix_expr(node ast.InfixExpr) { if node.op == .ne { g.write('!') } - g.write(c_esc(lsym.name + '_' + overload.mix_name)) + g.write(c_esc(lsym.name + '_' + overload.name)) g.write('(') g.expr(node.left) g.write(', ') @@ -293,7 +293,7 @@ fun (mut g Gen) expr_to_string(expr ast.Expr, typ ast.Type) { } str_def := g.table.get_method(sym, 'str') - if str_def.mix_name.length > 0 { + if str_def.name.length > 0 { final_sym := g.table.get_sym(str_def.params[0].typ) mut name := c_esc(final_sym.name) g.write('${name}_str(') diff --git a/lib/bait/gen/c/fun.bt b/lib/bait/gen/c/fun.bt index 15109cd6..e5b28bcc 100644 --- a/lib/bait/gen/c/fun.bt +++ b/lib/bait/gen/c/fun.bt @@ -17,7 +17,7 @@ fun (mut g Gen) anon_fun(node ast.AnonFun) { g.indent = last_indent g.empty_line = was_line_empty - g.write(node.decl.mix_name) + g.write(node.decl.name) } fun (mut g Gen) fun_decl(node ast.FunDecl) { @@ -37,10 +37,10 @@ fun (mut g Gen) fun_decl(node ast.FunDecl) { g.cur_fun = node type_str := g.typ(node.return_type) - mut name := c_esc(node.mix_name) + mut name := c_esc(node.name) if node.is_method { sym := g.table.get_sym(node.params[0].typ) - name = c_esc(sym.name + '_' + node.mix_name) + name = c_name(sym.name + '_' + node.name) } if g.cur_concrete_types.length > 0 { name = g.get_concrete_name(name, g.cur_concrete_types.values()) @@ -77,14 +77,14 @@ fun (mut g Gen) call_expr(node ast.CallExpr) { } else { g.write('.') } - g.write(node.mix_name) + g.write(node.name) g.write('(') g.call_args(node.args) g.write(')') return } - mut name := c_esc(node.mix_name) + mut name := c_esc(node.full_name()) if node.is_method { sym := g.table.get_sym(node.left_type) final_sym := g.table.get_final_sym(sym) @@ -103,9 +103,9 @@ fun (mut g Gen) call_expr(node ast.CallExpr) { } } - name = c_esc(sym.name + '_' + node.mix_name) + name = c_name(sym.name + '_' + node.name) } else if node.lang != .bait{ - name = node.mix_name.replace('C.', '') + name = node.name.replace('C.', '') } if node.concrete_types.length > 0 { @@ -114,7 +114,7 @@ fun (mut g Gen) call_expr(node ast.CallExpr) { g.write(name) - if not node.is_method and ['println', 'eprintln', 'print', 'eprint'].contains(node.mix_name) { + if not node.is_method and ['println', 'eprintln', 'print', 'eprint'].contains(node.name) { g.write('(') g.expr_to_string(node.args[0].expr, node.args[0].typ) g.write(')') diff --git a/lib/bait/gen/c/stmt.bt b/lib/bait/gen/c/stmt.bt index 551c4bee..647eb664 100644 --- a/lib/bait/gen/c/stmt.bt +++ b/lib/bait/gen/c/stmt.bt @@ -55,7 +55,7 @@ fun (mut g Gen) assign_stmt(node ast.AssignStmt) { if lsym.overloads.contains(node.op.c_repr()) { g.write(' = ') overload := lsym.overloads[node.op.c_repr()] - g.write(c_esc(lsym.name + '_' + overload.mix_name)) + g.write(c_esc(lsym.name + '_' + overload.name)) g.write('(') g.expr(node.left) g.write(', ') diff --git a/lib/bait/gen/js/fun.bt b/lib/bait/gen/js/fun.bt index 17350003..5c76890a 100644 --- a/lib/bait/gen/js/fun.bt +++ b/lib/bait/gen/js/fun.bt @@ -45,7 +45,7 @@ fun (mut g Gen) fun_decl(node ast.FunDecl) { export_attr := node.attrs.find_attr('export') if export_attr.name != '' { - g.writeln('module.exports.${export_attr.value} = ${js_esc(node.mix_name)}') + g.writeln('module.exports.${export_attr.value} = ${name}') } g.writeln('') @@ -113,7 +113,7 @@ fun (mut g Gen) call_expr_no_or(node ast.CallExpr) { return } - mut name := node.mix_name + mut name := node.full_name() if node.is_method { if name == 'str' { g.expr_to_string(node.left, node.left_type) @@ -127,9 +127,9 @@ fun (mut g Gen) call_expr_no_or(node ast.CallExpr) { return } - name = js_esc(sym.name + '_' + node.name) + name = js_name(sym.name + '_' + node.name) } else if node.lang == .bait{ - name = js_esc(node.mix_name) + name = js_esc(name) } if node.concrete_types.length > 0 {