From 8450028603016572bdb98e7a3e80d0c515b32e44 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Thu, 15 Feb 2024 16:47:18 +0000
Subject: [PATCH] Fix calling of variable on encapsulated pulse/readout

---
 src/variables.jl | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/variables.jl b/src/variables.jl
index 7e93b54..5d38b80 100644
--- a/src/variables.jl
+++ b/src/variables.jl
@@ -216,6 +216,8 @@ for (target_name, all_vars) in all_variables_symbols
         if variable_func in [:qval_square, :qval]
             continue
         end
+        get_func = Symbol("get_" * string(target_name))
+        use_get_func = target_name in (:pulse, :readout, :gradient)
         @eval function Variables.$variable_func(bb::AbstractBlock)
             try
                 if Variables.$variable_func in keys(alternative_variables)
@@ -237,8 +239,8 @@ for (target_name, all_vars) in all_variables_symbols
                 end
                 throw(VariableNotAvailable(typeof(bb), Variables.$variable_func))
             catch e
-                if e isa VariableNotAvailable && hasmethod(get_$(target_name), Tuple(typeof(bb))) && $(target_name) in (:pulse, :readout)
-                    return Variables.$variable_func(get_$(target_name)(bb))
+                if $use_get_func && e isa VariableNotAvailable && hasmethod($get_func, Tuple(typeof(bb)))
+                    return Variables.$variable_func($get_func(bb))
                 end
                 rethrow()
             end
-- 
GitLab