From 7c34a1af9612cc696fef9f4d62d1a9a9ef8ff9ae Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Tue, 4 Jan 2011 04:54:35 +0000 Subject: Protected protected constructors. since r19547, which was for #1836 but loosened the noose too much. Closes #4128, review by odersky. --- test/files/neg/protected-constructors.check | 25 +++++++++++++++++++++++++ test/files/neg/protected-constructors.scala | 21 +++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 test/files/neg/protected-constructors.check create mode 100644 test/files/neg/protected-constructors.scala (limited to 'test') diff --git a/test/files/neg/protected-constructors.check b/test/files/neg/protected-constructors.check new file mode 100644 index 0000000000..d6b9221a49 --- /dev/null +++ b/test/files/neg/protected-constructors.check @@ -0,0 +1,25 @@ +protected-constructors.scala:17: error: too many arguments for constructor Foo1: ()dingus.Foo1 + val foo1 = new Foo1("abc") + ^ +protected-constructors.scala:18: error: constructor Foo2 in class Foo2 cannot be accessed in object P + Access to protected constructor Foo2 not permitted because + enclosing class object P in package hungus is not a subclass of + class Foo2 in package dingus where target is defined + val foo2 = new Foo2("abc") + ^ +protected-constructors.scala:19: error: class Foo3 in object Ding cannot be accessed in object dingus.Ding + Access to protected class Foo3 not permitted because + enclosing class object P in package hungus is not a subclass of + object Ding in package dingus where target is defined + val foo3 = new Ding.Foo3("abc") + ^ +protected-constructors.scala:15: error: class Foo3 in object Ding cannot be accessed in object dingus.Ding + Access to protected class Foo3 not permitted because + enclosing class object P in package hungus is not a subclass of + object Ding in package dingus where target is defined + class Bar3 extends Ding.Foo3("abc") + ^ +protected-constructors.scala:15: error: too many arguments for constructor Object: ()java.lang.Object + class Bar3 extends Ding.Foo3("abc") + ^ +5 errors found diff --git a/test/files/neg/protected-constructors.scala b/test/files/neg/protected-constructors.scala new file mode 100644 index 0000000000..2838caf09c --- /dev/null +++ b/test/files/neg/protected-constructors.scala @@ -0,0 +1,21 @@ +package dingus { + class Foo1() { protected def this(name: String) = this() } + class Foo2 protected (name: String) { } + object Ding { + protected class Foo3(name: String) { } + } +} + +package hungus { + import dingus._ + + object P { + class Bar1 extends Foo1("abc") + class Bar2 extends Foo2("abc") + class Bar3 extends Ding.Foo3("abc") + + val foo1 = new Foo1("abc") + val foo2 = new Foo2("abc") + val foo3 = new Ding.Foo3("abc") + } +} -- cgit v1.2.3