From faff2933e6d83e087529576073accf4a3af74541 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Mon, 19 Dec 2022 22:15:53 -0700 Subject: [PATCH] Only capture splat if it has a name --- CHANGELOG.md | 3 +++ src/spectator/mocks/stubbable.cr | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a79e5e..6881601 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added ability to cast types using the return value from expect statements with a type matcher. +### Fixed +- Fix invalid syntax (unterminated call) when recording calls to stubs with an un-named splat. + ## [0.11.5] - 2022-12-18 ### Added - Added support for mock modules and types that include mocked modules. diff --git a/src/spectator/mocks/stubbable.cr b/src/spectator/mocks/stubbable.cr index 48f6ac5..119111d 100644 --- a/src/spectator/mocks/stubbable.cr +++ b/src/spectator/mocks/stubbable.cr @@ -180,7 +180,7 @@ module Spectator ::NamedTuple.new( {% for arg, i in method.args %}{% if !method.splat_index || i < method.splat_index %}{{arg.internal_name.stringify}}: {{arg.internal_name}}, {% end %}{% end %} ), - {% if method.splat_index && (splat = method.args[method.splat_index].internal_name) %}{{splat.symbolize}}, {{splat}},{% end %} + {% if method.splat_index && !(splat = method.args[method.splat_index].internal_name).empty? %}{{splat.symbolize}}, {{splat}},{% end %} ::NamedTuple.new( {% for arg, i in method.args %}{% if method.splat_index && i > method.splat_index %}{{arg.internal_name.stringify}}: {{arg.internal_name}}, {% end %}{% end %} ).merge({{method.double_splat}}) @@ -332,7 +332,7 @@ module Spectator ::NamedTuple.new( {% for arg, i in method.args %}{% if !method.splat_index || i < method.splat_index %}{{arg.internal_name.stringify}}: {{arg.internal_name}}, {% end %}{% end %} ), - {% if method.splat_index && (splat = method.args[method.splat_index].internal_name) %}{{splat.symbolize}}, {{splat}},{% end %} + {% if method.splat_index && !(splat = method.args[method.splat_index].internal_name).empty? %}{{splat.symbolize}}, {{splat}},{% end %} ::NamedTuple.new( {% for arg, i in method.args %}{% if method.splat_index && i > method.splat_index %}{{arg.internal_name.stringify}}: {{arg.internal_name}}, {% end %}{% end %} ).merge({{method.double_splat}})