From 1e9277689461452c594dc547dc0b0ceab8cd3e7d Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Tue, 6 Mar 2012 17:48:42 +0100 Subject: Fixes to value classes: Flags now double definitions, private constructors as errors. Fixed erasure scheme. --- test/files/neg/valueclasses.check | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'test/files/neg/valueclasses.check') diff --git a/test/files/neg/valueclasses.check b/test/files/neg/valueclasses.check index 30ee689511..756a0474fa 100644 --- a/test/files/neg/valueclasses.check +++ b/test/files/neg/valueclasses.check @@ -1,43 +1,46 @@ -valueclasses.scala:3: error: Only classes (not traits) are allowed to extend AnyVal +valueclasses.scala:3: error: only classes (not traits) are allowed to extend AnyVal trait T extends AnyVal // fail ^ -valueclasses.scala:6: error: Value class may not be a member of another class +valueclasses.scala:6: error: value class may not be a member of another class class Bar(x: Int) extends AnyVal // fail ^ -valueclasses.scala:8: error: Value class may not be a local class +valueclasses.scala:8: error: value class may not be a local class class Baz(x: Int) extends AnyVal // fail ^ -valueclasses.scala:12: error: Value class needs to have exactly one public val parameter +valueclasses.scala:12: error: value class needs to have exactly one public val parameter class V1 extends AnyVal // fail ^ -valueclasses.scala:14: error: Value class needs to have a publicly accessible val parameter +valueclasses.scala:14: error: value class needs to have a publicly accessible val parameter class V2(private[test] val x: Int) extends AnyVal // fail ^ -valueclasses.scala:15: error: Value class needs to have a publicly accessible val parameter +valueclasses.scala:15: error: value class needs to have a publicly accessible val parameter class V3(protected[test] val x: Int) extends AnyVal // fail ^ -valueclasses.scala:16: error: Value class needs to have a publicly accessible val parameter +valueclasses.scala:16: error: value class needs to have a publicly accessible val parameter class V4(protected val x: Int) extends AnyVal // fail ^ -valueclasses.scala:17: error: Value class needs to have a publicly accessible val parameter +valueclasses.scala:17: error: value class needs to have a publicly accessible val parameter class V5(private val x: Int) extends AnyVal // fail ^ -valueclasses.scala:19: error: Value class needs to have exactly one public val parameter +valueclasses.scala:19: error: value class needs to have exactly one public val parameter class V6(val x: Int, val y: String) extends AnyVal // fail ^ -valueclasses.scala:20: error: Illegal parameter for value class +valueclasses.scala:20: error: illegal parameter for value class class V7(val x: Int, private[this] val y: String) extends AnyVal // fail ^ -valueclasses.scala:21: error: Value class needs to have exactly one public val parameter +valueclasses.scala:21: error: value class needs to have exactly one public val parameter class V8(var x: Int) extends AnyVal // fail ^ -valueclasses.scala:24: error: This statement is not allowed in value class: private[this] val y: Int = V9.this.x +valueclasses.scala:24: error: this statement is not allowed in value class: private[this] val y: Int = V9.this.x val y = x // fail ^ valueclasses.scala:29: error: type parameter of value class may not be specialized class V12[@specialized T, U](val x: (T, U)) extends AnyVal // fail ^ -valueclasses.scala:31: error: Value class needs to have exactly one public val parameter +valueclasses.scala:31: error: value class needs to have exactly one public val parameter class V13(x: Int) extends AnyVal // fail ^ -14 errors found +valueclasses.scala:45: error: value class must have public primary constructor +final class TOD private (val secondsOfDay: Int) extends AnyVal { // should fail with private constructor + ^ +15 errors found -- cgit v1.2.3