summaryrefslogtreecommitdiff
path: root/test/files/neg/t7859.check
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-09-19 14:53:03 +0200
committerJason Zaugg <jzaugg@gmail.com>2013-09-29 22:37:17 +0200
commit4595ac665674b25af776d499ae1da61bb297d379 (patch)
tree5ce5c591fba9237a10abc82e7efeb6e61b755952 /test/files/neg/t7859.check
parent0aaf59149871f817a67c1fefcc3b0457fcb5e4fc (diff)
downloadscala-4595ac665674b25af776d499ae1da61bb297d379.tar.gz
scala-4595ac665674b25af776d499ae1da61bb297d379.tar.bz2
scala-4595ac665674b25af776d499ae1da61bb297d379.zip
SI-7859 Value classes may wrap a non-public member
We allow value class constructors to be non-public, so to be regular, we should also allow the same for the param accessor. This commit uses the 'makeNotPrivate' machinery to ensure that the backend can generate the requisite unboxing calls. This commit: - refactors the code that enforced the restrictions, improving a few error messages and positions. The remaining restrictions needed some rewording in light of this change. - allows value classes to have non-public, val parameters. private[this] / protected[this] are still disallowed as value classes don't have a concept of `this`, and because trying to accomdate then would complicate the implementation. This means that `class C(x: Int) extends AnyVal` is not allowed, the user still must write `private val x: Int` or `val x: Int`. - Outlaw `class C()()(val x: Int) extends AnyVal` to curtail any bugs that might lurk in such a formulation. The tests: - Show that the privacy is respected in the typer phase, under joint and separate compilation. We don't want a repeat performance of SI-6601. - Show that code that needs compiler-generated unboxes works under both compilation scenarios - Checks that the remaining restrictions are enforced and well communicated.
Diffstat (limited to 'test/files/neg/t7859.check')
-rw-r--r--test/files/neg/t7859.check19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/files/neg/t7859.check b/test/files/neg/t7859.check
new file mode 100644
index 0000000000..5789e2a122
--- /dev/null
+++ b/test/files/neg/t7859.check
@@ -0,0 +1,19 @@
+B_2.scala:6: error: not found: value x
+ new p1.A(x).x
+ ^
+B_2.scala:6: error: value x in class A cannot be accessed in p1.A
+ new p1.A(x).x
+ ^
+B_2.scala:7: error: not found: value x
+ new B(x).x
+ ^
+B_2.scala:7: error: value x is not a member of B
+ new B(x).x
+ ^
+B_2.scala:8: error: not found: value x
+ new C(x).x
+ ^
+B_2.scala:8: error: value x in class C cannot be accessed in C
+ new C(x).x
+ ^
+6 errors found