diff --git a/lib/trinity/sim_logger.ex b/lib/trinity/sim_logger.ex index 81c700c..1272ec3 100644 --- a/lib/trinity/sim_logger.ex +++ b/lib/trinity/sim_logger.ex @@ -55,15 +55,20 @@ defmodule Trinity.SimLogger do defmacro debug(message) do key = simulation_key() - {:<<>>, _, elements} = message values = - Enum.reduce(elements, [], fn - {:"::", _, [{{:., _, [Kernel, :to_string]}, _, [value]}, {:binary, _, _}]}, acc -> - [value | acc] - _, acc -> - acc - end) - |> Enum.reverse() + case message do + {:<<>>, _, elements} -> + # Extract interpolated variables + Enum.reduce(elements, [], fn + {:"::", _, [{{:., _, [Kernel, :to_string]}, _, [value]}, {:binary, _, _}]}, acc -> [value | acc] + _, acc -> acc + end) + |> Enum.reverse() + + string when is_binary(string) -> + # There are no interpolated variables + [] + end %{module: module, line: line} = __CALLER__ values_tuple = {:{}, [], [module, line | values]} diff --git a/test/trinity_test.exs b/test/trinity_test.exs index 7a9e54a..7978093 100644 --- a/test/trinity_test.exs +++ b/test/trinity_test.exs @@ -34,6 +34,8 @@ defmodule TrinityTest do } state = write_value(state, initial_count) + # Note: this intentionally tests a log message with no variables + SimLogger.debug "Init complete" {:ok, state} end