> > This is come up from my discussion with Jason Alexon on Slack when he was
> > trying to implement https://github.com/axelson/priv_check which checks for
> > function calls to the private (aka marked as `@doc false`) functions.
>
> My understanding is that you want to not warn on calls to private functions,
> as long as they are generated. If this is the case, the generated information
> is part of the metadata and the metadata is available in compilation tracers,
> which is what I would most likely use to trace all calls.
I do not see such information in compiler trace metadata
iex(3)> Code.compile_quoted(quote do
...(3)> defmodule Foo do
...(3)> require Logger
...(3)>
...(3)> def test do
...(3)> Logger.info("foo")
...(3)> end
...(3)> end
...(3)> end)
{:remote_macro, [required: true, context: Elixir, import: Kernel],
Kernel,
:defmodule, 2}
{:remote_function, [], :elixir_module, :compile, 4}
{:remote_function, [], Kernel.LexicalTracker, :read_cache, 2}
{:remote_macro, [required: true, context: Elixir, import: Kernel],
Kernel, :def,
2}
{:remote_function, [], :elixir_def, :store_definition, 5}
{:remote_function, [], :elixir_module, :read_cache, 2}
{:remote_function, [], :elixir_utils, :noop, 0}
{:remote_macro, [], Logger, :info, 1}
{:remote_function, [], Logger, :__should_log__, 2}
{:remote_function, [], Logger, :__do_log__, 4}
As you can see, there is no way to detect that `Logger.__should_log__/2` and
`Logger.__do_log__/4` are called from generated context, and these functions
are quite private.
The same goes for internal Elixir functions like `:elixir_module.compile/4` or
`Kernel.LexicalTracker.read_cache/2`. Being able to check that these functions
weren't called directly by user would make implementation of such tracer much
easier.
--
Łukasz Niemier
[email protected]
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/0C188167-01D6-4BE3-83DF-3147FDACEE30%40niemier.pl.