From 52391a646dc285e79dc51d923a1341bfa4634208 Mon Sep 17 00:00:00 2001 From: garrison Date: Sun, 1 Mar 2026 12:32:40 -0500 Subject: [PATCH] Fix SimLogger when message has no variables --- lib/trinity/sim_logger.ex | 21 +++++++++++++-------- test/trinity_test.exs | 2 ++ 2 files changed, 15 insertions(+), 8 deletions(-) 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 -- 2.51.2