Aliases and imports usually refer to external functions so names should be handled accordingly
Example input
defmodule A do
import B, only: [b_function: 1]
import C, except: [c_function: 1]
alias D, as: Dog
def use_b(x), do: x |> b_function
def use_c(c_function), do: c_function(0)
def use_d(y), do: Dog.sniff(y)
end
Desired output
defmodule(PLACEHOLDER_1) do
import(B, only: [b_function: 1])
import(C, except: [c_function: 1])
alias(D, as: PLACEHOLDER_2)
def(PLACEHOLDER_3(PLACEHOLDER_4)) do
PLACEHOLDER_4 |> b_function
end
def(PLACEHOLDER_5(PLACEHOLDER_6)) do
PLACEHOLDER_6(0)
end
def(PLACEHOLDER_7(PLACEHOLDER_8)) do
PLACEHOLDER_2.sniff(PLACEHOLDER_8)
end
end
b_function is imported so should appear as it is. c_function is excluded, so any mention of it is a local variable and should have a placeholder (current behavior already). Dog is an alias so should be replaced by a placeholder (possible overlap with #33).
Current output
defmodule(PLACEHOLDER_1) do
import(B, only: [b_function: 1])
import(C, except: [c_function: 1])
alias(D, as: Dog)
def(PLACEHOLDER_2(PLACEHOLDER_3)) do
PLACEHOLDER_3 |> PLACEHOLDER_4
end
def(PLACEHOLDER_5(PLACEHOLDER_6)) do
PLACEHOLDER_6(0)
end
def(PLACEHOLDER_7(PLACEHOLDER_8)) do
Dog.sniff(PLACEHOLDER_8)
end
end
In the case of import X where X is a standard library, it is possible to lookup all functions, so these should not de replaced either.
Aliases and imports usually refer to external functions so names should be handled accordingly
Example input
Desired output
b_functionis imported so should appear as it is.c_functionis excluded, so any mention of it is a local variable and should have a placeholder (current behavior already).Dogis an alias so should be replaced by a placeholder (possible overlap with #33).Current output
In the case of
import XwhereXis a standard library, it is possible to lookup all functions, so these should not de replaced either.