diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-05-03 02:28:10 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-05-03 02:28:10 -0700 |
commit | 48e80cb8c715cf8cb6dc73a5f894838671e385a4 (patch) | |
tree | 8c4bef6a82fde0551d2bfcd5a55678af4d2b0875 /test | |
parent | 98972c95ab1e7c0ea2af9c9a958c0de60eb26b3d (diff) | |
parent | 30099160320b649b1e8e5f69c8ad1b02478fbfe2 (diff) | |
download | scala-48e80cb8c715cf8cb6dc73a5f894838671e385a4.tar.gz scala-48e80cb8c715cf8cb6dc73a5f894838671e385a4.tar.bz2 scala-48e80cb8c715cf8cb6dc73a5f894838671e385a4.zip |
Merge pull request #2440 from retronym/ticket/6771
SI-6771 Alias awareness for checkableType in match analysis.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t6771b.check | 6 | ||||
-rw-r--r-- | test/files/neg/t6771b.scala | 16 | ||||
-rw-r--r-- | test/files/pos/t6771.flags | 1 | ||||
-rw-r--r-- | test/files/pos/t6771.scala | 9 |
4 files changed, 32 insertions, 0 deletions
diff --git a/test/files/neg/t6771b.check b/test/files/neg/t6771b.check new file mode 100644 index 0000000000..ba99e9178d --- /dev/null +++ b/test/files/neg/t6771b.check @@ -0,0 +1,6 @@ +t6771b.scala:14: error: type mismatch; + found : x.type (with underlying type String) + required: Test.a.type + b = b match { case x => x } + ^ +one error found diff --git a/test/files/neg/t6771b.scala b/test/files/neg/t6771b.scala new file mode 100644 index 0000000000..78f11f7750 --- /dev/null +++ b/test/files/neg/t6771b.scala @@ -0,0 +1,16 @@ +// Currently, the pattern matcher widens the type of the +// scrutinee, so this doesn't typecheck. This test just +// confirms this behaviour, although it would be an improvement +// to change this and make this a `pos` test. +// +// But, to the intrepid hacker who works on this, a few notes: +// You'll have to look into places in the pattern matcher that +// call `dealias`, and see if they need to be `dealiasWiden`. +// For example, if `checkableType` used only `dealias`, `pos/t6671.scala` +// would fail. +object Test { + val a = ""; var b: a.type = a + + b = b match { case x => x } +} + diff --git a/test/files/pos/t6771.flags b/test/files/pos/t6771.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/pos/t6771.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t6771.scala b/test/files/pos/t6771.scala new file mode 100644 index 0000000000..0f0bd4e4a0 --- /dev/null +++ b/test/files/pos/t6771.scala @@ -0,0 +1,9 @@ +object Test { + type Id[X] = X + val a: Id[Option[Int]] = None + + a match { + case Some(x) => println(x) + case None => + } +} |