Current section
Files
Jump to
Current section
Files
src/internal@ast_fun.erl
-module(internal@ast_fun).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([is_pub_fun_used/3, public_funs/1]).
-file("/Users/darky/Projects/cleam/src/internal/ast_fun.gleam", 28).
-spec check_fun_usage(
list(any()),
internal@ast:public_member(),
internal@ast:module_name()
) -> {ok, nil} | {error, nil}.
check_fun_usage(Statements, Pub_fun_name, Module_name) ->
{public_fun, Pub_fun_name@1} = case Pub_fun_name of
{public_fun, _} -> Pub_fun_name;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
value => _assert_fail,
module => <<"internal/ast_fun"/utf8>>,
function => <<"check_fun_usage"/utf8>>,
line => 29})
end,
{module_name, Module_name@1} = Module_name,
gleam@list:find_map(
Statements,
fun(Statement) ->
case begin
_pipe = Statement,
_pipe@1 = gleam@string:inspect(_pipe),
gleam_stdlib:contains_string(
_pipe@1,
<<<<<<<<"FieldAccess(Variable(\""/utf8,
Module_name@1/binary>>/binary,
"\"), \""/utf8>>/binary,
Pub_fun_name@1/binary>>/binary,
"\")"/utf8>>
)
end of
true ->
{ok, nil};
false ->
{error, nil}
end
end
).
-file("/Users/darky/Projects/cleam/src/internal/ast_fun.gleam", 19).
-spec is_pub_fun_used(
internal@ast:another_files_ast(),
internal@ast:public_member(),
internal@fs:module_full_name()
) -> {ok, nil} | {error, nil}.
is_pub_fun_used(Files_ast, Pub_fun_name, Module_full_name) ->
internal@ast:is_pub_member_used(
Files_ast,
Pub_fun_name,
Module_full_name,
fun check_fun_usage/3
).
-file("/Users/darky/Projects/cleam/src/internal/ast_fun.gleam", 8).
-spec public_funs(internal@ast:file_ast()) -> list(internal@ast:public_member()).
public_funs(File_ast) ->
{file_ast, Ast} = File_ast,
{module, _, _, _, _, Funs} = Ast,
gleam@list:flat_map(
Funs,
fun(Fun_def) ->
{definition, _, {function, Fun_name, Is_public, _, _, _, _}} = Fun_def,
case Is_public of
public when Fun_name =/= <<"main"/utf8>> ->
[{public_fun, Fun_name}];
_ ->
[]
end
end
).