From 7539fb51b9897816013262b54bd9e98114dcd24c Mon Sep 17 00:00:00 2001 From: odersky Date: Thu, 18 Apr 2024 13:40:56 +0200 Subject: [PATCH] Piggy-back some unrelated tests --- tests/pos/first-class-patterns.scala | 23 +++++++++++++++++++++++ tests/pos/into-bigint.scala | 21 +++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/pos/first-class-patterns.scala create mode 100644 tests/pos/into-bigint.scala diff --git a/tests/pos/first-class-patterns.scala b/tests/pos/first-class-patterns.scala new file mode 100644 index 000000000000..98d7faf4d8e7 --- /dev/null +++ b/tests/pos/first-class-patterns.scala @@ -0,0 +1,23 @@ + + // Trait of all extractors with unapply methods + trait Matcher[A, B]: + def unapply(x: A): Option[B] + + // An extractor defined by an unappy method + object Even extends Matcher[Int, Int]: + def unapply(x: Int): Option[Int] = + if x % 2 == 0 then Some(x) else None + + // Method using a given extractor in pattern position + def collect[A, B](xs: List[A], m: Matcher[A, B]): List[B] = + xs match + case Nil => Nil + case m(x) :: xs1 => x :: collect(xs1, m) + case _ :: xs1 => collect(xs1, m) + + @main def test = + val xs = List(1, 2, 3, 4) + val ys = collect(xs, Even) + println(ys) + + diff --git a/tests/pos/into-bigint.scala b/tests/pos/into-bigint.scala new file mode 100644 index 000000000000..d7ecee40b3ba --- /dev/null +++ b/tests/pos/into-bigint.scala @@ -0,0 +1,21 @@ +import language.experimental.into + +class BigInt(x: Int): + def + (other: into BigInt): BigInt = ??? + def * (other: into BigInt): BigInt = ??? + +object BigInt: + given Conversion[Int, BigInt] = BigInt(_) + + extension (x: into BigInt) + def + (other: BigInt): BigInt = ??? + def * (other: BigInt): BigInt = ??? + +@main def Test = + val x = BigInt(2) + val y = 3 + val a1 = x + y + val a2 = y * x + val a3 = x * x + val a4 = y + y +