diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-10-03 14:43:30 +0200 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-10-03 14:43:30 +0200 |
commit | 5d9cde105e804d14e2c15c3e15c147a56cb67ff1 (patch) | |
tree | 7d1ea64620c7e782a302ee7108a21fc6e4388853 /test/files/neg/valueclasses-impl-restrictions.scala | |
parent | ea9e4ec55ebb5dd6aaf22862622add7608e3f7a0 (diff) | |
download | scala-5d9cde105e804d14e2c15c3e15c147a56cb67ff1.tar.gz scala-5d9cde105e804d14e2c15c3e15c147a56cb67ff1.tar.bz2 scala-5d9cde105e804d14e2c15c3e15c147a56cb67ff1.zip |
Put more implementation restrictions on value classes.
Nested objects, classes and lazy vals are disallowed at any
nesting level in value classes; e.g. lazy vals local to a
method defined in a value class. There are still allowed in
universal traits.
This is a temporary, implementation restriction that is planned
to be addressed in future releases of Scala. Error messages has
been updated to communicate that intent.
Moved tests for SI-5582 and SI-6408 to pending folder. They have
to stay there until implementation restrictions are addressed.
Closes SI-6408 and SI-6432.
Review by @odersky, @harrah and @adriaanm.
Diffstat (limited to 'test/files/neg/valueclasses-impl-restrictions.scala')
-rw-r--r-- | test/files/neg/valueclasses-impl-restrictions.scala | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/files/neg/valueclasses-impl-restrictions.scala b/test/files/neg/valueclasses-impl-restrictions.scala new file mode 100644 index 0000000000..53396db958 --- /dev/null +++ b/test/files/neg/valueclasses-impl-restrictions.scala @@ -0,0 +1,28 @@ +class M(val t: Int) extends AnyVal { + def lazyString = { + object X + lazy val y = 1 + () => X + } +} + +class X1(val s: String) extends AnyVal { + trait I2 { + val q: String + def z = s + q + } + + def y(x: X1) = { + val i2 = new I2 { val q = x.s } + i2.z + } +} + +class X2(val s: String) extends AnyVal { + private[this] class I2(val q: String) + + def y(i: Int) = { + val i2 = new I2(i.toString) + i2.q + s + } +} |