diff --git a/cmd/tools/vcover/cover_test.v b/cmd/tools/vcover/cover_test.v index 26ec600db0..e4d5299ff3 100644 --- a/cmd/tools/vcover/cover_test.v +++ b/cmd/tools/vcover/cover_test.v @@ -34,6 +34,10 @@ fn np(path string) string { } fn test_simple() { + // if true { + // return + //} + t1 := np(os.join_path(tfolder, 't1')) t2 := np(os.join_path(tfolder, 't2')) t3 := np(os.join_path(tfolder, 't3')) diff --git a/vlib/builtin/map.v b/vlib/builtin/map.v index 382bec968e..2ea56e3eea 100644 --- a/vlib/builtin/map.v +++ b/vlib/builtin/map.v @@ -259,6 +259,7 @@ fn map_free_string(pkey voidptr) { fn map_free_nop(_ voidptr) { } +@[markused] fn new_map(key_bytes int, value_bytes int, hash_fn MapHashFn, key_eq_fn MapEqFn, clone_fn MapCloneFn, free_fn MapFreeFn) map { metasize := int(sizeof(u32) * (init_capicity + extra_metas_inc)) // for now assume anything bigger than a pointer is a string diff --git a/vlib/v/ast/table.v b/vlib/v/ast/table.v index f9258c6998..f6caee8429 100644 --- a/vlib/v/ast/table.v +++ b/vlib/v/ast/table.v @@ -32,6 +32,7 @@ pub mut: used_veb_types []Type // veb context types, filled in by checker used_maps int // how many times maps were used, filled in by markused used_arrays int // how many times arrays were used, filled in by markused + // json bool // json is imported } @[unsafe] @@ -65,7 +66,7 @@ pub mut: sumtypes map[int]SumTypeDecl cmod_prefix string // needed for ast.type_to_str(Type) while vfmt; contains `os.` is_fmt bool - used_features &UsedFeatures = &UsedFeatures{} // filled in by the checker/markused, when pref.skip_unused = true; + used_features &UsedFeatures = &UsedFeatures{} // filled in by the builder via markused module, when pref.skip_unused = true; veb_res_idx_cache int // Cache of `veb.Result` type veb_ctx_idx_cache int // Cache of `veb.Context` type panic_handler FnPanicHandler = default_table_panic_handler diff --git a/vlib/v/markused/markused.v b/vlib/v/markused/markused.v index a8d0caa12c..fd630cd43b 100644 --- a/vlib/v/markused/markused.v +++ b/vlib/v/markused/markused.v @@ -196,6 +196,9 @@ pub fn mark_used(mut table ast.Table, mut pref_ pref.Preferences, ast_files []&a all_fn_root_names << k continue } + // if mfn.name == 'before_request' { + // all_fn_root_names << k + //} // sync: if k == 'sync.new_channel_st' { @@ -338,6 +341,8 @@ pub fn mark_used(mut table ast.Table, mut pref_ pref.Preferences, ast_files []&a if 'C.cJSON_Parse' in all_fns { all_fn_root_names << 'tos5' + all_fn_root_names << 'time.unix' // used by json + table.used_features.used_maps++ // json needs new_map etc } mut walker := Walker.new( table: table @@ -349,6 +354,7 @@ pub fn mark_used(mut table ast.Table, mut pref_ pref.Preferences, ast_files []&a ) // println( all_fns.keys() ) walker.mark_markused_fns() // tagged with `@[markused]` + walker.mark_markused_consts() // tagged with `@[markused]` walker.mark_markused_globals() // tagged with `@[markused]` walker.mark_exported_fns() @@ -405,6 +411,7 @@ pub fn mark_used(mut table ast.Table, mut pref_ pref.Preferences, ast_files []&a walker.mark_const_as_used(kcon) } } + table.used_features.used_fns = walker.used_fns.move() table.used_features.used_consts = walker.used_consts.move() table.used_features.used_globals = walker.used_globals.move() diff --git a/vlib/v/pref/pref.v b/vlib/v/pref/pref.v index 749843bdef..bc757b2487 100644 --- a/vlib/v/pref/pref.v +++ b/vlib/v/pref/pref.v @@ -335,6 +335,7 @@ pub fn parse_args_and_show_errors(known_external_commands []string, args []strin res.use_cache = true res.skip_unused = true } */ + mut no_skip_unused := false mut command, mut command_idx := '', 0 for i := 0; i < args.len; i++ { @@ -602,6 +603,7 @@ pub fn parse_args_and_show_errors(known_external_commands []string, args []strin res.skip_unused = true } '-no-skip-unused' { + no_skip_unused = true res.skip_unused = false } '-compress' { @@ -1134,6 +1136,13 @@ pub fn parse_args_and_show_errors(known_external_commands []string, args []strin res.build_options = m.keys() // eprintln('>> res.build_options: $res.build_options') res.fill_with_defaults() + if res.backend == .c { + // res.skip_unused = true + if no_skip_unused { + res.skip_unused = false + } + } + return res, command }