diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-06-11 09:24:54 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2014-06-11 09:24:54 +0200 |
commit | a7046785e98db823a25eaaa975e571baed89690a (patch) | |
tree | ec187b5b7bbaaf3b6b2fdacd38169015e7e30d36 /test/files | |
parent | fdc3812b0f61942f7682db0ba2dcfcf5658a0894 (diff) | |
parent | 7046d73e2a1d88273a8382f27a4fb0af6f87db3b (diff) | |
download | scala-a7046785e98db823a25eaaa975e571baed89690a.tar.gz scala-a7046785e98db823a25eaaa975e571baed89690a.tar.bz2 scala-a7046785e98db823a25eaaa975e571baed89690a.zip |
Merge pull request #3781 from retronym/topic/8611
SI-8611 Avoid accidental patmat unification with refinement types
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/run/t8611a.flags | 1 | ||||
-rw-r--r-- | test/files/run/t8611a.scala | 16 | ||||
-rw-r--r-- | test/files/run/t8611b.flags | 1 | ||||
-rw-r--r-- | test/files/run/t8611b.scala | 54 | ||||
-rw-r--r-- | test/files/run/t8611c.flags | 1 | ||||
-rw-r--r-- | test/files/run/t8611c.scala | 21 |
6 files changed, 94 insertions, 0 deletions
diff --git a/test/files/run/t8611a.flags b/test/files/run/t8611a.flags new file mode 100644 index 0000000000..85d8eb2ba2 --- /dev/null +++ b/test/files/run/t8611a.flags @@ -0,0 +1 @@ +-Xfatal-warnings diff --git a/test/files/run/t8611a.scala b/test/files/run/t8611a.scala new file mode 100644 index 0000000000..99304df762 --- /dev/null +++ b/test/files/run/t8611a.scala @@ -0,0 +1,16 @@ +trait K +trait L + +object O { + type LK = K with L + val A: LK = new K with L + val B: LK = new K with L +} + +object Test extends App { + val scrut: O.LK = O.B + scrut match { + case O.A => ??? + case O.B => // spurious unreachable + } +} diff --git a/test/files/run/t8611b.flags b/test/files/run/t8611b.flags new file mode 100644 index 0000000000..85d8eb2ba2 --- /dev/null +++ b/test/files/run/t8611b.flags @@ -0,0 +1 @@ +-Xfatal-warnings diff --git a/test/files/run/t8611b.scala b/test/files/run/t8611b.scala new file mode 100644 index 0000000000..2df17c9ca0 --- /dev/null +++ b/test/files/run/t8611b.scala @@ -0,0 +1,54 @@ +sealed trait KrafsDescription + +abstract class NotWorkingEnum extends Enumeration { + + type ExtendedValue = Value with KrafsDescription + + def Enum(inDescription: String): ExtendedValue = { + new Val(nextId) with KrafsDescription { + } + } +} + +abstract class WorkingEnum extends Enumeration { + + type ExtendedValue = Value + + def Enum(inDescription: String): ExtendedValue = { + new Val(nextId) { + } + } +} + +object NotWorkingTab extends NotWorkingEnum { + val a = Enum("A") + val b = Enum("B") +} + +object WorkingTab extends WorkingEnum { + val a = Enum("A") + val b = Enum("B") +} + +object Test extends App { + testGris() + testWorking() + + def testGris() { + val pipp = NotWorkingTab.b + pipp match { + case NotWorkingTab.a => ??? + case NotWorkingTab.b => + case _ => ??? + } + } + + def testWorking() { + val stuff = WorkingTab.a + stuff match { + case WorkingTab.a => + case WorkingTab.b => ??? + case _ => ??? + } + } +} diff --git a/test/files/run/t8611c.flags b/test/files/run/t8611c.flags new file mode 100644 index 0000000000..85d8eb2ba2 --- /dev/null +++ b/test/files/run/t8611c.flags @@ -0,0 +1 @@ +-Xfatal-warnings diff --git a/test/files/run/t8611c.scala b/test/files/run/t8611c.scala new file mode 100644 index 0000000000..2bd17f29a5 --- /dev/null +++ b/test/files/run/t8611c.scala @@ -0,0 +1,21 @@ +trait K +trait L + +object O { + type LK = K with L +} + +object Test extends App { + local + + def local = { + val A: O.LK = new K with L + val B: O.LK = new K with L + val scrut: O.LK = A + scrut match { + case B if "".isEmpty => ??? + case A => + case B => ??? + } + } +} |