@@ -80,16 +80,10 @@ function arguments_product(s1, s2)
8080 return throw (ArgumentError (" Mixing non-empty storage types is illegal" ))
8181end
8282
83- arguments_isless (s1, s2) = isless (sym_arguments_insert_unspecified (s1, s2)... )
84- function arguments_isless (t:: Tuple , nt:: NamedTuple )
85- isempty (nt) && return arguments_isless (t, ())
86- isempty (t) && return arguments_isless ((;), nt)
87- return throw (ArgumentError (" Mixing non-empty storage types is illegal" ))
88- end
89- function arguments_isless (nt:: NamedTuple , t:: Tuple )
90- isempty (nt) && return arguments_isless ((), t)
91- isempty (t) && return arguments_isless (nt, (;))
92- return throw (ArgumentError (" Mixing non-empty storage types is illegal" ))
83+ function arguments_isless (a1, a2)
84+ isempty (a1) && return _arguments_isless (empty (a2), a2)
85+ isempty (a2) && return _arguments_isless (a1, empty (a1))
86+ return isless (sym_arguments_insert_unspecified (a1, a2)... )
9387end
9488
9589# ================================= Cartesian Product ====================================
@@ -189,6 +183,9 @@ function arguments_insert_unspecified(t1::Tuple, t2::Tuple)
189183 return (t1... , trivial .(t2[(n1 + 1 ): end ])... )
190184end
191185
186+ function _arguments_isless (t1:: Tuple , t2:: Tuple )
187+ return isless (sym_arguments_insert_unspecified (t1, t2)... )
188+ end
192189# =========================== Dictionary-like implementation =============================
193190function SectorProduct (nt:: NamedTuple )
194191 arguments = sort_keys (nt)
@@ -240,3 +237,7 @@ function shared_arguments_fusion_rule(shared1::NT, shared2::NT) where {NT<:Named
240237 tuple_fused = shared_arguments_fusion_rule (values (shared1), values (shared2))
241238 return map_blocklabels (SectorProduct ∘ NT ∘ arguments ∘ SectorProduct, tuple_fused)
242239end
240+
241+ function _arguments_isless (nt1:: NamedTuple , nt2:: NamedTuple )
242+ return isless (sym_arguments_insert_unspecified (nt1, nt2)... )
243+ end
0 commit comments