File tree Expand file tree Collapse file tree 4 files changed +28
-5
lines changed
compiler/src/dotty/tools/dotc/transform/patmat Expand file tree Collapse file tree 4 files changed +28
-5
lines changed Original file line number Diff line number Diff line change @@ -584,10 +584,9 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
584584 // precondition: `tp1` should have the shape `path.Child`, thus `ThisType` is always covariant
585585 val thisTypeMap = new TypeMap {
586586 def apply (t : Type ): Type = t match {
587- case tp @ ThisType (tref) if ! tref.symbol.isStaticOwner && ! tref.symbol.is(Module ) =>
588- // TODO: stackoverflow here
589- // newTypeVar(TypeBounds.upper(mapOver(tp.underlying)))
590- newTypeVar(TypeBounds .upper(mapOver(tref & tref.classSymbol.asClass.givenSelfType)))
587+ case tp @ ThisType (tref) if ! tref.symbol.isStaticOwner =>
588+ if (tref.symbol.is(Module )) mapOver(tref)
589+ else newTypeVar(TypeBounds .upper(tp.underlying))
591590 case _ =>
592591 mapOver(t)
593592 }
@@ -633,7 +632,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
633632 else {
634633 val protoTp2 = typeParamMap(tp2)
635634 if (protoTp1 <:< protoTp2) {
636- isFullyDefined(protoTp1 & protoTp2, force)
635+ isFullyDefined(AndType ( protoTp1, protoTp2) , force)
637636 instUndetMap(protoTp1)
638637 }
639638 else {
Original file line number Diff line number Diff line change 1+ 11: Pattern Match Exhaustivity: Decimal
Original file line number Diff line number Diff line change 1+ trait AxisCompanion {
2+ sealed trait Format
3+ object Format {
4+ case object Decimal extends Format
5+ case object Integer extends Format
6+ }
7+ }
8+ object Axis extends AxisCompanion
9+ class Axis {
10+ import Axis ._
11+ def test ( f : Format ) = f match {
12+ case Format .Integer => " Int"
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ object O {
2+ sealed trait Trait [+ A ] { type T }
3+ case class CaseClass [+ A ](a : A ) extends Trait [A ] { type T = Nothing }
4+
5+ def id [TT , A ](v : Trait [A ] { type T = TT }): Trait [A ] { type T = TT } =
6+ v match {
7+ case CaseClass (a) => CaseClass (a)
8+ }
9+ }
You can’t perform that action at this time.
0 commit comments