@@ -441,7 +441,9 @@ Base.Broadcast.DefaultArrayStyle{1}()
441
441
function result_style end
442
442
443
443
result_style (s:: BroadcastStyle ) = s
444
- result_style (s1:: S , s2:: S ) where S<: BroadcastStyle = S ()
444
+ function result_style (s1:: S , s2:: S ) where S<: BroadcastStyle
445
+ s1 ≡ s2 ? s1 : error (" inconsistent broadcast styles, custom rule needed" )
446
+ end
445
447
# Test both orders so users typically only have to declare one order
446
448
result_style (s1, s2) = result_join (s1, s2, BroadcastStyle (s1, s2), BroadcastStyle (s2, s1))
447
449
@@ -457,7 +459,8 @@ result_join(::Any, ::Any, s::BroadcastStyle, ::Unknown) = s
457
459
result_join (:: AbstractArrayStyle , :: AbstractArrayStyle , :: Unknown , :: Unknown ) =
458
460
ArrayConflict ()
459
461
# Fallbacks in case users define `rule` for both argument-orders (not recommended)
460
- result_join (:: Any , :: Any , :: S , :: S ) where S<: BroadcastStyle = S ()
462
+ result_join (:: Any , :: Any , s1:: S , s2:: S ) where S<: BroadcastStyle = result_style (s1, s2)
463
+
461
464
@noinline function result_join (:: S , :: T , :: U , :: V ) where {S,T,U,V}
462
465
error ("""
463
466
conflicting broadcast rules defined
0 commit comments