diff options
author | Paul Phillips <paulp@improving.org> | 2011-01-04 04:54:35 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-01-04 04:54:35 +0000 |
commit | 7c34a1af9612cc696fef9f4d62d1a9a9ef8ff9ae (patch) | |
tree | 554896cc74c2ac36dc7723b4aadb7849f63d8482 /test/files/neg | |
parent | c0a4e5acdc23bbfae3d4035b7922f3f3841cc822 (diff) | |
download | scala-7c34a1af9612cc696fef9f4d62d1a9a9ef8ff9ae.tar.gz scala-7c34a1af9612cc696fef9f4d62d1a9a9ef8ff9ae.tar.bz2 scala-7c34a1af9612cc696fef9f4d62d1a9a9ef8ff9ae.zip |
Protected protected constructors.
since r19547, which was for #1836 but loosened the noose too much.
Closes #4128, review by odersky.
Diffstat (limited to 'test/files/neg')
-rw-r--r-- | test/files/neg/protected-constructors.check | 25 | ||||
-rw-r--r-- | test/files/neg/protected-constructors.scala | 21 |
2 files changed, 46 insertions, 0 deletions
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") + } +} |