From b7c3816fdbb01ab3b42fa23db8352d5cee81cf78 Mon Sep 17 00:00:00 2001 From: "H. S. Teoh" Date: Wed, 5 Nov 2014 22:03:15 -0800 Subject: [PATCH] Do reflexivity check in assert mode if predicate is claimed to be equivalence relation. --- std/algorithm.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/std/algorithm.d b/std/algorithm.d index 0c162973e..d52dae1c1 100644 --- a/std/algorithm.d +++ b/std/algorithm.d @@ -4663,7 +4663,14 @@ private struct GroupByImpl(alias pred, IsEquivRelation isEquivRelation, Range) { r = _r; if (!empty) + { + // Check reflexivity if predicate is claimed to be an equivalence + // relation. + assert(!isEquivRelation || pred(r.front, r.front), + "predicate " ~ pred.stringof ~ " is claimed to be "~ + "equivalence relation yet isn't reflexive"); savePrev(); + } } @property bool empty() { return r.empty; }