From 0fd4685f0fb862abdcab0b8c0a91584a4084ba5e Mon Sep 17 00:00:00 2001 From: Lee Tibbert Date: Wed, 18 Nov 2020 12:54:08 -0500 Subject: [PATCH] Annotate & test j.u.f.BiPredicate default methods. This PR builds upon merged PR #1937 by annotating the existing j.u.f.BiPredicate.scala and porting its corresponding BiPredicateTest from Scala.js. The existing file was edited rather than porting the most current Scala.js commit because the latter uses lambdas and those do not play well when using Scala Native with Scala 2.11. See Issue #1972 for background & discussion of JavaDefaultMethod annotation. --- .../main/scala/java/util/function/BiPredicate.scala | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/javalib/src/main/scala/java/util/function/BiPredicate.scala b/javalib/src/main/scala/java/util/function/BiPredicate.scala index 5daf91fef0..f9df09dbca 100644 --- a/javalib/src/main/scala/java/util/function/BiPredicate.scala +++ b/javalib/src/main/scala/java/util/function/BiPredicate.scala @@ -1,23 +1,30 @@ +// Influenced by Scala.js commit: 0c27b64 dated: 2020-09-06 + package java.util.function +import scala.scalanative.annotation.JavaDefaultMethod + trait BiPredicate[T, U] { self => + def test(t: T, u: U): Boolean + + @JavaDefaultMethod def and(other: BiPredicate[_ >: T, _ >: U]): BiPredicate[T, U] = new BiPredicate[T, U] { override def test(t: T, u: U): Boolean = self.test(t, u) && other.test(t, u) } + @JavaDefaultMethod def negate(): BiPredicate[T, U] = new BiPredicate[T, U] { override def test(t: T, u: U): Boolean = !self.test(t, u) } + @JavaDefaultMethod def or(other: BiPredicate[_ >: T, _ >: U]): BiPredicate[T, U] = new BiPredicate[T, U] { override def test(t: T, u: U): Boolean = self.test(t, u) || other.test(t, u) } - - def test(t: T, u: U): Boolean }