From 83afec59e4976bbfd5a890b88e4767739b722192 Mon Sep 17 00:00:00 2001
From: Enrico Guiraud <enrico.guiraud@cern.ch>
Date: Tue, 12 Feb 2019 11:07:39 +0100
Subject: [PATCH] [DF] Let Filter accept return values convertible to bool

...and add test coverage
---
 tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx | 3 ++-
 tree/dataframe/test/dataframe_simple.cxx       | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx
index 3b8d8b76e28..4a971041ef8 100644
--- a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx
+++ b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx
@@ -265,7 +265,8 @@ template <typename Filter>
 void CheckFilter(Filter &)
 {
    using FilterRet_t = typename RDF::CallableTraits<Filter>::ret_type;
-   static_assert(std::is_same<FilterRet_t, bool>::value, "filter functions must return a bool");
+   static_assert(std::is_convertible<FilterRet_t, bool>::value,
+                 "filter expression returns a type that is not convertible to bool");
 }
 
 void CheckCustomColumn(std::string_view definedCol, TTree *treePtr, const ColumnNames_t &customCols,
diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx
index 6cadccc01f7..5e014afd725 100644
--- a/tree/dataframe/test/dataframe_simple.cxx
+++ b/tree/dataframe/test/dataframe_simple.cxx
@@ -399,7 +399,7 @@ TEST_P(RDFSimpleTests, Define_Multiple)
 TEST_P(RDFSimpleTests, Define_Multiple_Filter)
 {
    RDataFrame tdf(3);
-   auto notFilteringFilter = [](int b1) { return b1 > 0; };
+   auto notFilteringFilter = [](int b1) { return b1; }; // also tests returning a type convertible to bool
    auto filteringFilter = [](int b2) { return b2 < 1; };
 
    auto root = tdf.Define("root", "0");
-- 
GitLab