@@ -27,17 +27,12 @@ struct Tangent{P,T} <: AbstractTangent
27
27
backing:: T
28
28
29
29
function Tangent {P,T} (backing) where {P,T}
30
- function backing_error (P, G, E)
31
- msg = " Tangent for the primal $P should be backed by a $E type, not by $G ."
32
- return throw (ArgumentError (msg))
33
- end
34
-
35
30
if P <: Tuple
36
- T <: Tuple || backing_error (P, T, Tuple)
31
+ T <: Tuple || _backing_error (P, T, Tuple)
37
32
elseif P <: AbstractDict
38
- T <: AbstractDict || backing_error (P, T, AbstractDict)
39
- else
40
- T <: NamedTuple || backing_error (P, T, NamedTuple)
33
+ T <: AbstractDict || _backing_error (P, T, AbstractDict)
34
+ else # Any other struct (including NamedTuple)
35
+ T <: NamedTuple || _backing_error (P, T, NamedTuple)
41
36
end
42
37
return new (backing)
43
38
end
@@ -61,6 +56,11 @@ function Tangent{P}(d::Dict) where {P<:Dict}
61
56
return Tangent {P,typeof(d)} (d)
62
57
end
63
58
59
+ function _backing_error (P, G, E)
60
+ msg = " Tangent for the primal $P should be backed by a $E type, not by $G ."
61
+ throw (ArgumentError (msg))
62
+ end
63
+
64
64
function Base.:(== )(a:: Tangent{P,T} , b:: Tangent{P,T} ) where {P,T}
65
65
return backing (a) == backing (b)
66
66
end
0 commit comments