summaryrefslogtreecommitdiff
path: root/test/files/neg/t3873.check
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-02-10 16:16:37 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-02-12 17:49:48 -0800
commitd5a1ea61871ad695c67a2165d0e569f304e63662 (patch)
tree4e3af4441ef920bd697b4faa4511486018e9de4d /test/files/neg/t3873.check
parent9c4a6e3ed7624892f46948c1c0fb57d7d5b3346e (diff)
downloadscala-d5a1ea61871ad695c67a2165d0e569f304e63662.tar.gz
scala-d5a1ea61871ad695c67a2165d0e569f304e63662.tar.bz2
scala-d5a1ea61871ad695c67a2165d0e569f304e63662.zip
SI-7753 InstantiateDependentMap narrows type of unstable args
[Most of this comment and the initial fix were implemented by Jason Zaugg. I just cleaned it up a bit.] After a soundness fix in SI-3873, instantiation of dependent method type results behaved differently depending on whether the argument from which we were propagating information had a stable type or not. This is particular to substitution into singleton types over the parameter in question. If the argument was stable, it was substituted into singleton types, such as the one below in the prefix in `a.type#B` (which is the longhand version of `a.B`) scala> class A { type B >: Null <: AnyRef } defined class A scala> object AA extends A { type B = String } defined object AA scala> def foo(a: A): a.B = null foo: (a: A)a.B scala> foo(AA) res0: AA.B = null But what if it isn't stable? scala> foo({def a = AA; a: A { type B <: String}}) res1: a.B = null This commit changes that to: scala> foo({def a = AA; a: A { type B <: String}}) res1: A{type B <: String}#B = null
Diffstat (limited to 'test/files/neg/t3873.check')
-rw-r--r--test/files/neg/t3873.check4
1 files changed, 2 insertions, 2 deletions
diff --git a/test/files/neg/t3873.check b/test/files/neg/t3873.check
index 54d6abdf63..f9f413aeaf 100644
--- a/test/files/neg/t3873.check
+++ b/test/files/neg/t3873.check
@@ -1,6 +1,6 @@
t3873.scala:11: error: type mismatch;
found : Test.a.B
- required: a.B
- wrongf(new A)(a.b) // should not compile -- TODO: improve error message? the "a" is ambiguous
+ required: a.B where val a: A
+ wrongf(new A)(a.b) // should not compile
^
one error found