diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2007-08-22 13:46:38 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2007-08-22 13:46:38 +0000 |
commit | 20caac2baca22cd3cb71a7f21da5703e4ca6f09a (patch) | |
tree | f234bd36e7c14e362d2d5d87007334ad96720c19 /test/files/neg | |
parent | e69edec6c715240cf71f4a555232ea18cd21e19f (diff) | |
download | scala-20caac2baca22cd3cb71a7f21da5703e4ca6f09a.tar.gz scala-20caac2baca22cd3cb71a7f21da5703e4ca6f09a.tar.bz2 scala-20caac2baca22cd3cb71a7f21da5703e4ca6f09a.zip |
fixed 1275 by adding minimal early check to Nam...
fixed 1275 by adding minimal early check to Namers so that overriding of type members in refinements cannot change number of type parameters (in principle the full overriding checks should be performed at a later point, when they don't cause cyclicity errors -- this is TODO)
Diffstat (limited to 'test/files/neg')
-rw-r--r-- | test/files/neg/bug1275.check | 4 | ||||
-rw-r--r-- | test/files/neg/bug1275.scala | 14 |
2 files changed, 18 insertions, 0 deletions
diff --git a/test/files/neg/bug1275.check b/test/files/neg/bug1275.check new file mode 100644 index 0000000000..6ff92a7823 --- /dev/null +++ b/test/files/neg/bug1275.check @@ -0,0 +1,4 @@ +bug1275.scala:13: error: The kind of type MyType does not conform to the expected kind of type MyType[+t] <: TestCovariance.this.Seq[t] in trait Seq. + def span[a, s <: Seq[a] { type MyType <: s } ](xs: s): s = xs f + ^ +one error found diff --git a/test/files/neg/bug1275.scala b/test/files/neg/bug1275.scala new file mode 100644 index 0000000000..04c66400c8 --- /dev/null +++ b/test/files/neg/bug1275.scala @@ -0,0 +1,14 @@ +// tested using Scala compiler version 2.6.0-RC1 -- (c) 2002-2007 LAMP/EPFL + +// prompted by "Covariant return types" mailing list question +object TestCovariance { + + // see Type constructor polymorphism in http://www.scala-lang.org/docu/changelog.html + trait Seq[+t] { + type MyType[+t] <: Seq[t] + + def f: MyType[t] + } + + def span[a, s <: Seq[a] { type MyType <: s } ](xs: s): s = xs f +} |