diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index f8f9fffbef..021bdee055 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -1799,7 +1799,7 @@ pub fn (mut c Checker) call_fn(mut call_expr ast.CallExpr) table.Type { call_expr.name = name_prefixed found = true f = f1 - c.table.fns[name_prefixed].is_used = true + c.table.fns[name_prefixed].usages++ } } if !found && call_expr.left is ast.IndexExpr { @@ -1833,7 +1833,7 @@ pub fn (mut c Checker) call_fn(mut call_expr ast.CallExpr) table.Type { if f1 := c.table.find_fn(fn_name) { found = true f = f1 - c.table.fns[fn_name].is_used = true + c.table.fns[fn_name].usages++ } } if c.pref.is_script && !found { @@ -1845,7 +1845,7 @@ pub fn (mut c Checker) call_fn(mut call_expr ast.CallExpr) table.Type { call_expr.name = os_name found = true f = f1 - c.table.fns[os_name].is_used = true + c.table.fns[os_name].usages++ } } // check for arg (var) of fn type diff --git a/vlib/v/gen/c/fn.v b/vlib/v/gen/c/fn.v index 608d5330d6..0d4beea635 100644 --- a/vlib/v/gen/c/fn.v +++ b/vlib/v/gen/c/fn.v @@ -26,13 +26,16 @@ fn (mut g Gen) gen_fn_decl(node ast.FnDecl, skip bool) { return } } - if f := g.table.find_fn(node.name) { - if !f.is_used { - g.writeln('// fn $node.name UNUSED') - // return + */ + if g.pref.experimental { + if f := g.table.find_fn(node.name) { + println('> usages: ${f.usages:-10} | node.name: $node.name') + if f.usages == 0 { + g.writeln('// fn $node.name UNUSED') + return + } } } - */ g.returned_var_name = '' // diff --git a/vlib/v/table/table.v b/vlib/v/table/table.v index 915218938b..f9253f186f 100644 --- a/vlib/v/table/table.v +++ b/vlib/v/table/table.v @@ -39,7 +39,7 @@ pub: pub mut: name string source_fn voidptr // set in the checker, while processing fn declarations - is_used bool + usages int } fn (f &Fn) method_equals(o &Fn) bool {