summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-12-08 06:07:27 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-12-08 06:07:27 +0000
commit6e15632fcbcb8578b30850ee93b3d3d8c9f3e7b9 (patch)
treecdf601a76c953bd0ed77b02cd62a2baaa67267b5 /src
parent9a7e511b3e851eba9e8cd7a422d21af9b8023204 (diff)
downloadscala-6e15632fcbcb8578b30850ee93b3d3d8c9f3e7b9.tar.gz
scala-6e15632fcbcb8578b30850ee93b3d3d8c9f3e7b9.tar.bz2
scala-6e15632fcbcb8578b30850ee93b3d3d8c9f3e7b9.zip
again: relax access boundry check for overridin...
again: relax access boundry check for overriding protected java members. review by eugenevigdorchik.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/ant/Scaladoc.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala7
-rw-r--r--src/swing/scala/swing/RichWindow.scala2
3 files changed, 6 insertions, 5 deletions
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()