File tree 2 files changed +12
-1
lines changed
compiler/src/dotty/tools/dotc/transform/patmat
2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -449,6 +449,7 @@ object SpaceEngine {
449
449
*
450
450
* @param inArray whether `tp` is a type argument to `Array`
451
451
* @param isValue whether `tp` is the type which match against values
452
+ * @param isTyped whether `tp` is the type from a `Typed` tree
452
453
*
453
454
* If `isValue` is true, then pattern-bound symbols are erased to its upper bound.
454
455
* This is needed to avoid spurious unreachable warnings. See tests/patmat/i6197.scala.
@@ -459,7 +460,7 @@ object SpaceEngine {
459
460
WildcardType
460
461
461
462
case tp @ AppliedType (tycon, args) =>
462
- val inArray = tycon.isRef(defn.ArrayClass )
463
+ val inArray = tycon.isRef(defn.ArrayClass ) || tp.translucentSuperType.isRef(defn. ArrayClass )
463
464
val args2 =
464
465
if isTyped && ! inArray then args.map(_ => WildcardType )
465
466
else args.map(arg => erase(arg, inArray = inArray, isValue = false ))
Original file line number Diff line number Diff line change
1
+ // Capturing the regression will implementing the fix for i18364
2
+ // That broke in CI, "case _" "Unreachable case except for null"
3
+ // Because IArray is an opaque alias of Array
4
+ object Tup :
5
+ /** Convert an immutable array into a tuple of unknown arity and types */
6
+ def fromIArray [T ](xs : IArray [T ]): Tuple =
7
+ val xs2 : IArray [Object ] = xs match
8
+ case xs : IArray [Object ] @ unchecked => xs
9
+ case _ => xs.map(_.asInstanceOf [Object ])
10
+ runtime.Tuples .fromIArray(xs2)
You can’t perform that action at this time.
0 commit comments