From 2f1999b3776dd89109d032d5ed7b6c6988266e6d Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sat, 19 Mar 2022 16:32:25 -0600 Subject: [PATCH] Fix call expansion in debug log Macro expansion somehow generated an error when calling a missing method with a block. ``` syntax error in :1 Error: unknown token: 'n' ``` It seems like 'n' is from the '\n' that was previously generated: ``` Log.debug { "Got undefined method " + "baz do\n yield\nend" } ``` --- src/spectator/mocks/double.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/spectator/mocks/double.cr b/src/spectator/mocks/double.cr index 95538e0..716f2c4 100644 --- a/src/spectator/mocks/double.cr +++ b/src/spectator/mocks/double.cr @@ -124,8 +124,8 @@ module Spectator # Handle all methods but only respond to configured messages. # Raises an `UnexpectedMessage` error for non-configures messages. macro method_missing(call) - Log.debug { "Got undefined method " + {{call.stringify}} } - args = ::Spectator::Arguments.capture({{call.args.splat(", ")}}{% if call.named_args %}{{call.named_args.splat}}{% end %}) + Log.debug { "Got undefined method `{{call.name}}({{*call.args}}{% if call.named_args %}{% unless call.args.empty? %}, {% end %}{{*call.named_args}}{% end %}){% if call.block %} { ... }{% end %}`" } + args = ::Spectator::Arguments.capture({{call.args.splat(", ")}}{% if call.named_args %}{{*call.named_args}}{% end %}) call = ::Spectator::MethodCall.new({{call.name.symbolize}}, args) raise ::Spectator::UnexpectedMessage.new("#{_spectator_stubbed_name} received unexpected message :{{call.name}} with #{args}") nil # Necessary for compiler to infer return type as nil. Avoids runtime "can't execute ... `x` has no type errors".