From 890e77db896cb6b6e1a77eca99a6c7226543d300 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Thu, 11 Apr 2024 16:17:48 +0100
Subject: [PATCH] Improve check if `get_gradient` should be called

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

diff --git a/src/variables.jl b/src/variables.jl
index af796e9..6d85e71 100644
--- a/src/variables.jl
+++ b/src/variables.jl
@@ -291,7 +291,9 @@ end
 for base_fn in [:qval, :gradient_strength, :slew_rate]
     fn3 = Symbol(String(base_fn) * "3")
     @eval function $fn3(bb::AbstractBlock, args...; kwargs...)
-        if hasproperty(bb, :orientation)
+        if hasmethod(get_gradient, (typeof(bb), ))
+            return $fn3(get_gradient(bb), args...; kwargs...)
+        else
             value = $base_fn(bb, args...; kwargs...)
             if value isa Number && iszero(value)
                 return zero(SVector{3, Float64})
@@ -300,8 +302,6 @@ for base_fn in [:qval, :gradient_strength, :slew_rate]
             else
                 return value .* bb.orientation
             end
-        else
-            return $fn3(get_gradient(bb), args...; kwargs...)
         end
     end
     @eval $fn3(nt::NamedTuple, args...; kwargs...) = map(v -> $fn3(v, args...; kwargs...), nt)
-- 
GitLab