From 7a2d588b0b59a6e27c5350c7d13232d23bbcb0c7 Mon Sep 17 00:00:00 2001 From: James Cook Date: Sat, 4 Sep 2021 08:35:51 +0100 Subject: [PATCH] remove empty namedtuple from key when no kwargs --- src/Memoization.jl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Memoization.jl b/src/Memoization.jl index de9b004..afeb070 100644 --- a/src/Memoization.jl +++ b/src/Memoization.jl @@ -91,11 +91,20 @@ macro memoize(ex1, ex2=nothing) cacheid_get = cacheid_empty = sdef[:name] end + sdef[:body] = if isempty(kwarg_signature) # the body of the function definition is replaced with this: - sdef[:body] = quote - ($getter)() = $(sdef[:body]) - $T = $(Core.Compiler.return_type)($getter, $Tuple{}) - $_get!($getter, $get_cache($cache_constructor, $cacheid_get), (($(arg_signature...),),(;$(kwarg_signature...),))) :: $T + quote + ($getter)() = $(sdef[:body]) + $T = $(Core.Compiler.return_type)($getter, $Tuple{}) + $_get!($getter, $get_cache($cache_constructor, $cacheid_get), $(arg_signature...)) :: $T + end + else + quote + ($getter)() = $(sdef[:body]) + $T = $(Core.Compiler.return_type)($getter, $Tuple{}) + $_get!($getter, $get_cache($cache_constructor, $cacheid_get), (($(arg_signature...),),(;$(kwarg_signature...),))) :: $T + end + end quote