diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-07-08 15:58:47 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-07-08 15:58:47 +0000 |
commit | d7814a235963f40f4de1bf49efd4b22a8b0da5db (patch) | |
tree | 7e9b127853d072b049f05e2d2376234fefc5c4ca /test/files | |
parent | 356abe3a5b76eb382eca6655624743aa16a001ae (diff) | |
download | scala-d7814a235963f40f4de1bf49efd4b22a8b0da5db.tar.gz scala-d7814a235963f40f4de1bf49efd4b22a8b0da5db.tar.bz2 scala-d7814a235963f40f4de1bf49efd4b22a8b0da5db.zip |
closes #2416.
this patch introduces a new subclass of TypeTree: TypeTreeWithDeferredRefCheck, which tracks the type args and type params of a type application when it was beta-reduced during typing without checking that the application was well-kinded -- that check must wait until refchecks, but was never performed since the application had been beta-reduced away
caveat discovered while working on the fix: adapt turned all trees for
which _.isType holds into TypeTree's
review by odersky
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/neg/t2416.check | 10 | ||||
-rw-r--r-- | test/files/neg/t2416.scala | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/test/files/neg/t2416.check b/test/files/neg/t2416.check new file mode 100644 index 0000000000..0899ad09d5 --- /dev/null +++ b/test/files/neg/t2416.check @@ -0,0 +1,10 @@ +t2416.scala:3: error: type arguments [Int] do not conform to trait A's type parameter bounds [X <: Double] + def x : A[Int]#B = 10 // no you won't + ^ +t2416.scala:8: error: type arguments [Boolean] do not conform to type B's type parameter bounds [Y <: Double] + def x : A#B[Boolean] = 10 // seriously? + ^ +t2416.scala:13: error: type arguments [String] do not conform to type B's type parameter bounds [Z <: Double] + type C[Z <: A] = Z#B[String] // nuh-uh! + ^ +three errors found diff --git a/test/files/neg/t2416.scala b/test/files/neg/t2416.scala new file mode 100644 index 0000000000..6bb57a984b --- /dev/null +++ b/test/files/neg/t2416.scala @@ -0,0 +1,14 @@ +object t2416a { + trait A[X <: Double] { type B = X } + def x : A[Int]#B = 10 // no you won't +} + +object t2416b { + trait A{type B[Y <: Double] = Int} + def x : A#B[Boolean] = 10 // seriously? +} + +object t2416c { + trait A{type B[Z <: Double] = Int} + type C[Z <: A] = Z#B[String] // nuh-uh! +}
\ No newline at end of file |