From 931efb8716753bfe6b39f92f7c55ea26e1d264cd Mon Sep 17 00:00:00 2001 From: Decel <8268812+Decel@users.noreply.github.com> Date: Wed, 8 Mar 2023 03:04:50 +0100 Subject: [PATCH 1/4] Add files via upload --- tests/pos/16899.scala | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 tests/pos/16899.scala diff --git a/tests/pos/16899.scala b/tests/pos/16899.scala new file mode 100644 index 000000000000..61d1b7dd404b --- /dev/null +++ b/tests/pos/16899.scala @@ -0,0 +1,5 @@ +sealed trait Unset + +def foo(v: Unset|Option[Int]): Unit = v match + case v: Unset => () + case v: Option[Int] => () \ No newline at end of file From ce05ee86702d3904474edaef5c63ea917c503286 Mon Sep 17 00:00:00 2001 From: Decel <8268812+Decel@users.noreply.github.com> Date: Wed, 8 Mar 2023 03:06:09 +0100 Subject: [PATCH 2/4] Update TypeTestsCasts.scala --- compiler/src/dotty/tools/dotc/transform/TypeTestsCasts.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/src/dotty/tools/dotc/transform/TypeTestsCasts.scala b/compiler/src/dotty/tools/dotc/transform/TypeTestsCasts.scala index 3763af243881..0a6b774b83dd 100644 --- a/compiler/src/dotty/tools/dotc/transform/TypeTestsCasts.scala +++ b/compiler/src/dotty/tools/dotc/transform/TypeTestsCasts.scala @@ -151,6 +151,7 @@ object TypeTestsCasts { // always false test warnings are emitted elsewhere X.classSymbol.exists && P.classSymbol.exists && !X.classSymbol.asClass.mayHaveCommonChild(P.classSymbol.asClass) + || X.classSymbol.isOneOf(FinalOrSealed) || typeArgsTrivial(X, tpe) ||| i"its type arguments can't be determined from $X" } From e9b4975384d74cf8610352bf92edebb3016e1d9f Mon Sep 17 00:00:00 2001 From: Decel <8268812+Decel@users.noreply.github.com> Date: Wed, 15 Mar 2023 01:55:22 +0100 Subject: [PATCH 3/4] Add a regression test for #10369 Was fixed in `3.2.1-RC1`. Add a regression test for #10369. --- tests/pos/i10369.scala | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tests/pos/i10369.scala diff --git a/tests/pos/i10369.scala b/tests/pos/i10369.scala new file mode 100644 index 000000000000..8689c2833664 --- /dev/null +++ b/tests/pos/i10369.scala @@ -0,0 +1,15 @@ +type Upgrade[T] = T match + case Int => Double + case Char => String + case Boolean => Boolean + +val upgrade: [t] => t => Upgrade[t] = new PolyFunction: + def apply[T](x: T): Upgrade[T] = x match + case x: Int => x.toDouble + case x: Char => x.toString + case x: Boolean => !x + +val upgrade2: [t] => t => Upgrade[t] = [t] => (x: t) => x match + case x: Int => x.toDouble + case x: Char => x.toString + case x: Boolean => !x From b94ec9b999716f3e3826914de889dd0308d68e13 Mon Sep 17 00:00:00 2001 From: Decel <8268812+Decel@users.noreply.github.com> Date: Wed, 15 Mar 2023 02:06:32 +0100 Subject: [PATCH 4/4] Delete i10369.scala --- tests/pos/i10369.scala | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 tests/pos/i10369.scala diff --git a/tests/pos/i10369.scala b/tests/pos/i10369.scala deleted file mode 100644 index 8689c2833664..000000000000 --- a/tests/pos/i10369.scala +++ /dev/null @@ -1,15 +0,0 @@ -type Upgrade[T] = T match - case Int => Double - case Char => String - case Boolean => Boolean - -val upgrade: [t] => t => Upgrade[t] = new PolyFunction: - def apply[T](x: T): Upgrade[T] = x match - case x: Int => x.toDouble - case x: Char => x.toString - case x: Boolean => !x - -val upgrade2: [t] => t => Upgrade[t] = [t] => (x: t) => x match - case x: Int => x.toDouble - case x: Char => x.toString - case x: Boolean => !x