File tree 2 files changed +19
-0
lines changed
compiler/src/dotty/tools/dotc/transform/patmat
2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -497,6 +497,17 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
497
497
def refine (parent : Type , child : Symbol ): Type = {
498
498
if (child.isTerm && child.is(Case , butNot = Module )) return child.termRef // enum vals always match
499
499
500
+ // <local child> is a place holder from Scalac, it is hopeless to instantiate it.
501
+ //
502
+ // Quote from scalac (from nsc/symtab/classfile/Pickler.scala):
503
+ //
504
+ // ...When a sealed class/trait has local subclasses, a single
505
+ // <local child> class symbol is added as pickled child
506
+ // (instead of a reference to the anonymous class; that was done
507
+ // initially, but seems not to work, ...).
508
+ //
509
+ if (child.name == tpnme.LOCAL_CHILD ) return child.typeRef
510
+
500
511
val childTp = if (child.isTerm) child.termRef else child.typeRef
501
512
502
513
val resTp = instantiate(childTp, parent)(ctx.fresh.setNewTyperState())
Original file line number Diff line number Diff line change
1
+ import scala .concurrent .duration .{Duration , FiniteDuration }
2
+
3
+ class Test {
4
+ def test (d : Duration ) = d match {
5
+ case finite : FiniteDuration =>
6
+ case d =>
7
+ }
8
+ }
You can’t perform that action at this time.
0 commit comments