operators.pm6 (rakudo-2020.08.2) | : | operators.pm6 (rakudo-2020.09) | ||
---|---|---|---|---|
skipping to change at line 58 | skipping to change at line 58 | |||
!! rolish.HOW.archetypes.composalizable() | !! rolish.HOW.archetypes.composalizable() | |||
?? rolish.HOW.composalize(rolish) | ?? rolish.HOW.composalize(rolish) | |||
!! X::Mixin::NotComposable.new(:target(obj), :rolish(rolish) ).throw | !! X::Mixin::NotComposable.new(:target(obj), :rolish(rolish) ).throw | |||
} | } | |||
obj.^mixin(|real-roles).BUILD_LEAST_DERIVED({}); | obj.^mixin(|real-roles).BUILD_LEAST_DERIVED({}); | |||
} | } | |||
multi sub infix:<does>(Mu:U \obj, **@roles) is raw { | multi sub infix:<does>(Mu:U \obj, **@roles) is raw { | |||
X::Does::TypeObject.new(type => obj).throw | X::Does::TypeObject.new(type => obj).throw | |||
} | } | |||
# we need this candidate tighter than infix:<cmp>(Real:D, Real:D) | ||||
# but can't yet use `is default` at the place where that candidate | ||||
# is defined because it uses `infix:<does>` | ||||
multi sub infix:<cmp>(Rational:D \a, Rational:D \b) is default { | ||||
a.isNaN || b.isNaN ?? a.Num cmp b.Num !! a <=> b | ||||
} | ||||
proto sub infix:<but>(Mu, |) is pure {*} | proto sub infix:<but>(Mu, |) is pure {*} | |||
multi sub infix:<but>(Mu:D \obj, Mu:U \rolish) { | multi sub infix:<but>(Mu:D \obj, Mu:U \rolish) { | |||
my $role := rolish.HOW.archetypes.composable() ?? rolish !! | my $role := rolish.HOW.archetypes.composable() ?? rolish !! | |||
rolish.HOW.archetypes.composalizable() ?? rolish.HOW.composalize (rolish) !! | rolish.HOW.archetypes.composalizable() ?? rolish.HOW.composalize (rolish) !! | |||
X::Mixin::NotComposable.new(:target(obj), :rolish(rolish)).throw ; | X::Mixin::NotComposable.new(:target(obj), :rolish(rolish)).throw ; | |||
obj.clone.^mixin($role).BUILD_LEAST_DERIVED({}); | obj.clone.^mixin($role).BUILD_LEAST_DERIVED({}); | |||
} | } | |||
multi sub infix:<but>(Mu:D \obj, Mu:U \rolish, :$value! is raw) { | multi sub infix:<but>(Mu:D \obj, Mu:U \rolish, :$value! is raw) { | |||
my $role := rolish.HOW.archetypes.composable() ?? rolish !! | my $role := rolish.HOW.archetypes.composable() ?? rolish !! | |||
rolish.HOW.archetypes.composalizable() ?? rolish.HOW.composalize (rolish) !! | rolish.HOW.archetypes.composalizable() ?? rolish.HOW.composalize (rolish) !! | |||
End of changes. 1 change blocks. | ||||
7 lines changed or deleted | 0 lines changed or added |