File tree 2 files changed +11
-1
lines changed
compiler/src/dotty/tools/dotc/typer
2 files changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -1738,7 +1738,9 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
1738
1738
// check `pat` here and throw away the result.
1739
1739
val gadtCtx : Context = ctx.fresh.setFreshGADTBounds
1740
1740
val pat1 = typedPattern(pat, selType)(using gadtCtx)
1741
- val Typed (_, tpt) = tpd.unbind(tpd.unsplice(pat1)): @ unchecked
1741
+ val tpt = tpd.unbind(tpd.unsplice(pat1)) match
1742
+ case Typed (_, tpt) => tpt
1743
+ case UnApply (fun, _, p1 :: _) if fun.symbol == defn.TypeTest_unapply => p1
1742
1744
instantiateMatchTypeProto(pat1, pt) match {
1743
1745
case defn.MatchCase (patternTp, _) => tpt.tpe frozen_=:= patternTp
1744
1746
case _ => false
Original file line number Diff line number Diff line change
1
+
2
+ trait UsingTypeTest [B ](using reflect.TypeTest [Int , B ]):
3
+
4
+ type M [U <: Int ] = U match
5
+ case B => String
6
+
7
+ def m (t : Int ): M [Int ] = t match
8
+ case _ : B => " hello"
You can’t perform that action at this time.
0 commit comments