File tree 3 files changed +34
-1
lines changed
compiler/src/dotty/tools/dotc/transform/patmat
3 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -597,7 +597,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
597
597
case tp : RefinedType =>
598
598
recur(tp.parent)
599
599
case tp : TypeRef =>
600
- recur(tp.prefix) && ! (tp.classSymbol.is(AbstractFinal ))
600
+ (tp.prefix.stripTypeVar == defn. NothingType || recur(tp.prefix) ) && ! (tp.classSymbol.is(AbstractFinal ))
601
601
case _ =>
602
602
true
603
603
}
Original file line number Diff line number Diff line change
1
+ sealed abstract class AbstractFile
2
+ class PlainFile (path : String ) extends AbstractFile
3
+ class VirtualFile (name : String ) extends AbstractFile
4
+ abstract class ZipArchive (path : String ) extends AbstractFile {
5
+ sealed abstract class Entry (name : String ) extends VirtualFile (name)
6
+ class DirEntry (path : String ) extends Entry (path)
7
+ }
8
+
9
+ object Test {
10
+ def foo (file : AbstractFile ) = file match {
11
+ case a : PlainFile =>
12
+ case b : ZipArchive =>
13
+ case c1 : ZipArchive # Entry =>
14
+ case c1 : ZipArchive # DirEntry =>
15
+ case c : VirtualFile =>
16
+ }
17
+ }
Original file line number Diff line number Diff line change
1
+ sealed abstract class AbstractFile
2
+ class PlainFile (path : String ) extends AbstractFile
3
+ class VirtualFile (name : String ) extends AbstractFile
4
+ abstract class ZipArchive (path : String ) extends AbstractFile {
5
+ sealed abstract class Entry (name : String ) extends VirtualFile (name)
6
+ class DirEntry (path : String ) extends Entry (path)
7
+ }
8
+
9
+ object Test {
10
+ def foo (file : AbstractFile ) = file match {
11
+ case a : PlainFile =>
12
+ case b : ZipArchive =>
13
+ case c1 : ZipArchive # Entry =>
14
+ case c : VirtualFile =>
15
+ }
16
+ }
You can’t perform that action at this time.
0 commit comments