Maybe @spec id(t) :: t. T seems to be considered as an atom :"Elixir.T" by dializer, and not a variable.
@spec id(t) :: t
T
:"Elixir.T"