Skip to content

Commit 42e0aa6

Browse files
authored
prevent adding methods to the functions > and >= (#771)
* prevent adding methods to the functions `>` and `>=` As documented, the intended way to implement `>` is to add a method to `<`. Similarly with `>=`. A package should never add a method to either `>` or `>=`. * remove `eval` and `for`
1 parent 7decc58 commit 42e0aa6

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

src/dual.jl

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -383,23 +383,18 @@ end
383383
# Before PR#481 this loop ran over this list:
384384
# BINARY_PREDICATES = Symbol[:isequal, :isless, :<, :>, :(==), :(!=), :(<=), :(>=)]
385385
# Not a minimal set, as Base defines some in terms of others.
386-
for pred in [:<, :>]
387-
predeq = Symbol(pred, :(=))
388-
@eval begin
389-
@define_binary_dual_op(
390-
Base.$(pred),
391-
$(pred)(value(x), value(y)) || (value(x) == value(y) && $(pred)(partials(x), partials(y))),
392-
$(pred)(value(x), y) || (value(x) == y && $(pred)(partials(x), zero(partials(x)))),
393-
$(pred)(x, value(y)) || (x == value(y) && $(pred)(zero(partials(y)), partials(y))),
394-
)
395-
@define_binary_dual_op(
396-
Base.$(predeq),
397-
$(pred)(value(x), value(y)) || (value(x) == value(y) && $(predeq)(partials(x), partials(y))),
398-
$(pred)(value(x), y) || (value(x) == y && $(predeq)(partials(x), zero(partials(x)))),
399-
$(pred)(x, value(y)) || (x == value(y) && $(predeq)(zero(partials(y)), partials(y))),
400-
)
401-
end
402-
end
386+
@define_binary_dual_op(
387+
Base.:(<),
388+
(value(x) < value(y)) || (value(x) == value(y) && (partials(x) < partials(y))),
389+
(value(x) < y) || (value(x) == y && (partials(x) < zero(partials(x)))),
390+
(x < value(y)) || (x == value(y) && (zero(partials(y)) < partials(y))),
391+
)
392+
@define_binary_dual_op(
393+
Base.:(<=),
394+
(value(x) < value(y)) || (value(x) == value(y) && (partials(x) <= partials(y))),
395+
(value(x) < y) || (value(x) == y && (partials(x) <= zero(partials(x)))),
396+
(x < value(y)) || (x == value(y) && (zero(partials(y)) <= partials(y))),
397+
)
403398

404399
@define_binary_dual_op(
405400
Base.isless,

0 commit comments

Comments
 (0)