Skip to content

Commit f130f34

Browse files
committed
generic isless
1 parent c41c2fe commit f130f34

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

NDTensors/src/lib/SymmetrySectors/src/sector_product.jl

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,10 @@ function arguments_product(s1, s2)
8080
return throw(ArgumentError("Mixing non-empty storage types is illegal"))
8181
end
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)...)
9387
end
9488

9589
# ================================= Cartesian Product ====================================
@@ -189,6 +183,9 @@ function arguments_insert_unspecified(t1::Tuple, t2::Tuple)
189183
return (t1..., trivial.(t2[(n1 + 1):end])...)
190184
end
191185

186+
function _arguments_isless(t1::Tuple, t2::Tuple)
187+
return isless(sym_arguments_insert_unspecified(t1, t2)...)
188+
end
192189
# =========================== Dictionary-like implementation =============================
193190
function 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)
242239
end
240+
241+
function _arguments_isless(nt1::NamedTuple, nt2::NamedTuple)
242+
return isless(sym_arguments_insert_unspecified(nt1, nt2)...)
243+
end

NDTensors/src/lib/SymmetrySectors/test/test_sector_product.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,8 @@ end
546546
sA1 = SectorProduct(; A=U1(1))
547547

548548
@test sA1 != st1
549-
@test_throws ArgumentError sA1 < st1
550-
@test_throws ArgumentError st1 < sA1
549+
@test_throws MethodError sA1 < st1
550+
@test_throws MethodError st1 < sA1
551551
@test_throws MethodError st1 sA1
552552
@test_throws MethodError sA1 st1
553553
@test_throws ArgumentError st1 × sA1

0 commit comments

Comments
 (0)