-module(internal@checker). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([not_used_functions/2, not_used_const/2, not_used_types/2]). -spec not_used_functions( internal@fs:files_dir(), list({internal@fs:file_path(), internal@ast:file_ast(), internal@ast:another_files_ast()}) ) -> list({internal@ast:public_member(), internal@fs:file_path()}). not_used_functions(Dir, Ast_info) -> gleam@list:flat_map( Ast_info, fun(_use0) -> {File_path, File_ast, Another_files_ast} = _use0, Public_funs = internal@ast_fun:public_funs(File_ast), gleam@list:flat_map( Public_funs, fun(Public_fun) -> Is_public_fun_used = internal@ast_fun:is_pub_fun_used( Another_files_ast, Public_fun, internal@fs:file_path_to_module_full_name( Dir, File_path ) ), case Is_public_fun_used of {ok, nil} -> []; {error, nil} -> [{Public_fun, File_path}] end end ) end ). -spec not_used_const( internal@fs:files_dir(), list({internal@fs:file_path(), internal@ast:file_ast(), internal@ast:another_files_ast()}) ) -> list({internal@ast:public_member(), internal@fs:file_path()}). not_used_const(Dir, Ast_info) -> gleam@list:flat_map( Ast_info, fun(_use0) -> {File_path, File_ast, Another_files_ast} = _use0, Public_const = internal@ast_const:public_const(File_ast), gleam@list:flat_map( Public_const, fun(Public_const@1) -> Is_public_const_used = internal@ast_const:is_pub_const_used( Another_files_ast, Public_const@1, internal@fs:file_path_to_module_full_name( Dir, File_path ) ), case Is_public_const_used of {ok, nil} -> []; {error, nil} -> [{Public_const@1, File_path}] end end ) end ). -spec not_used_types( internal@fs:files_dir(), list({internal@fs:file_path(), internal@ast:file_ast(), internal@ast:another_files_ast()}) ) -> list({internal@ast:public_member(), internal@fs:file_path()}). not_used_types(Dir, Ast_info) -> gleam@list:flat_map( Ast_info, fun(_use0) -> {File_path, File_ast, Another_files_ast} = _use0, Public_types = internal@ast_type:public_type(File_ast), gleam@list:flat_map( Public_types, fun(Public_type) -> Is_public_const_used = internal@ast_type:is_pub_type_used( Another_files_ast, Public_type, internal@fs:file_path_to_module_full_name( Dir, File_path ) ), case Is_public_const_used of {ok, nil} -> []; {error, nil} -> [{Public_type, File_path}] end end ) end ).