diff options
-rw-r--r-- | lib/scala-compiler.jar.desired.sha1 | 2 | ||||
-rw-r--r-- | lib/scala-library-src.jar.desired.sha1 | 2 | ||||
-rw-r--r-- | lib/scala-library.jar.desired.sha1 | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/ant/Scaladoc.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 7 | ||||
-rw-r--r-- | src/swing/scala/swing/RichWindow.scala | 2 | ||||
-rw-r--r-- | test/files/neg/t3946.check | 5 | ||||
-rw-r--r-- | test/files/neg/t3946/J.java | 4 | ||||
-rw-r--r-- | test/files/neg/t3946/S_1.scala | 4 | ||||
-rw-r--r-- | test/files/pos/t3946/A.java | 5 | ||||
-rw-r--r-- | test/files/pos/t3946/Test_1.scala | 12 |
11 files changed, 26 insertions, 21 deletions
diff --git a/lib/scala-compiler.jar.desired.sha1 b/lib/scala-compiler.jar.desired.sha1 index 3fa1fccfa3..bc1a144d80 100644 --- a/lib/scala-compiler.jar.desired.sha1 +++ b/lib/scala-compiler.jar.desired.sha1 @@ -1 +1 @@ -65f6a6844c953bf382f58f917b8598eb68bc7cca ?scala-compiler.jar +6b3f27462c889064a7a21c64746d0edc4eb37379 ?scala-compiler.jar diff --git a/lib/scala-library-src.jar.desired.sha1 b/lib/scala-library-src.jar.desired.sha1 index 9de4216368..6f44972af2 100644 --- a/lib/scala-library-src.jar.desired.sha1 +++ b/lib/scala-library-src.jar.desired.sha1 @@ -1 +1 @@ -7eefa1dc56e2fc5915826a7e7e92148d276bf345 ?scala-library-src.jar +63be019508818165998eaa2be955eaa28ef4ad8c ?scala-library-src.jar diff --git a/lib/scala-library.jar.desired.sha1 b/lib/scala-library.jar.desired.sha1 index 8d556de26f..82b58d912e 100644 --- a/lib/scala-library.jar.desired.sha1 +++ b/lib/scala-library.jar.desired.sha1 @@ -1 +1 @@ -a85cfc60d37f72ac1e46322b1e2565b17ef347fd ?scala-library.jar +5bebaa6adbb7d8cf91bf7ff7b45a747dbafcaf2f ?scala-library.jar diff --git a/src/compiler/scala/tools/ant/Scaladoc.scala b/src/compiler/scala/tools/ant/Scaladoc.scala index be5311b471..720aa105d1 100644 --- a/src/compiler/scala/tools/ant/Scaladoc.scala +++ b/src/compiler/scala/tools/ant/Scaladoc.scala @@ -384,7 +384,7 @@ class Scaladoc extends ScalaMatchingTask { /** This is forwarding method to circumvent bug #281 in Scala 2. Remove when * bug has been corrected. */ - override def getDirectoryScanner(baseDir: java.io.File) = + override protected def getDirectoryScanner(baseDir: java.io.File) = super.getDirectoryScanner(baseDir) /** Transforms a string name into a file relative to the provided base diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 5c8e474d58..67664b7262 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -329,9 +329,10 @@ abstract class RefChecks extends InfoTransform { // todo: align accessibility implication checking with isAccessible in Contexts val ob = other.accessBoundary(member.owner) val mb = member.accessBoundary(member.owner) - def isOverrideAccessOK = member.isPublic || { // member is public, definitely same or relaxed access - (!other.isProtected || member.isProtected) && // if o is protected, so is m - (!isRootOrNone(ob) && ob.hasTransOwner(mb)) // m relaxes o's access boundary + def isOverrideAccessOK = member.isPublic || { // member is public, definitely same or relaxed access + (!other.isProtected || member.isProtected) && // if o is protected, so is m + ((!isRootOrNone(ob) && ob.hasTransOwner(mb)) || // m relaxes o's access boundary + other.isJavaDefined) // overriding a protected java member, see #3946 } if (!isOverrideAccessOK) { overrideAccessError() diff --git a/src/swing/scala/swing/RichWindow.scala b/src/swing/scala/swing/RichWindow.scala index dcad382a33..10e396247e 100644 --- a/src/swing/scala/swing/RichWindow.scala +++ b/src/swing/scala/swing/RichWindow.scala @@ -78,7 +78,7 @@ class Frame extends RichWindow { override lazy val peer: JFrame with InterfaceMixin = new JFrame with InterfaceMixin with SuperMixin protected trait SuperMixin extends JFrame { - override def processWindowEvent(e: java.awt.event.WindowEvent) { + override protected def processWindowEvent(e: java.awt.event.WindowEvent) { super.processWindowEvent(e) if (e.getID() == java.awt.event.WindowEvent.WINDOW_CLOSING) closeOperation() diff --git a/test/files/neg/t3946.check b/test/files/neg/t3946.check deleted file mode 100644 index 6379b50dba..0000000000 --- a/test/files/neg/t3946.check +++ /dev/null @@ -1,5 +0,0 @@ -S_1.scala:3: error: overriding method m in class J of type ()Unit; - method m has weaker access privileges; it should be at least protected[p] - override protected def m { } - ^ -one error found diff --git a/test/files/neg/t3946/J.java b/test/files/neg/t3946/J.java deleted file mode 100644 index 189b8e1d23..0000000000 --- a/test/files/neg/t3946/J.java +++ /dev/null @@ -1,4 +0,0 @@ -package p; -public class J { - protected void m() { return; } -} diff --git a/test/files/neg/t3946/S_1.scala b/test/files/neg/t3946/S_1.scala deleted file mode 100644 index 2c52094701..0000000000 --- a/test/files/neg/t3946/S_1.scala +++ /dev/null @@ -1,4 +0,0 @@ -package p -class S extends J { - override protected def m { } -} diff --git a/test/files/pos/t3946/A.java b/test/files/pos/t3946/A.java new file mode 100644 index 0000000000..70265229df --- /dev/null +++ b/test/files/pos/t3946/A.java @@ -0,0 +1,5 @@ +package p; + +public class A { + protected void f() {} +} diff --git a/test/files/pos/t3946/Test_1.scala b/test/files/pos/t3946/Test_1.scala new file mode 100644 index 0000000000..0cceff3aab --- /dev/null +++ b/test/files/pos/t3946/Test_1.scala @@ -0,0 +1,12 @@ +package q { + class B extends p.A { + override protected def f() { } + } +} + +package p { + object T { + val a = new A() + a.f() + } +} |