From mboxrd@z Thu Jan 1 00:00:00 1970 From: bryce@albatross.co.nz To: java-gnats@sourceware.cygnus.com Subject: java/1267: Innerclass cannot access protected method declared in foreign-package superclass of parent Date: Wed, 20 Dec 2000 12:23:00 -0000 Message-id: <20000529044956.7421.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg01055.html List-Id: >Number: 1267 >Category: java >Synopsis: Innerclass cannot access protected method declared in foreign-package superclass of parent >Confidential: no >Severity: serious >Priority: medium >Responsible: apbianco >State: closed >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 12:18:30 PST 2000 >Closed-Date: Thu Jul 20 17:05:56 PDT 2000 >Last-Modified: Thu Jul 20 17:16:01 PDT 2000 >Originator: Bryce McKinlay >Release: gcc version 2.96 20000525 (experimental) w/ PR177 fix >Organization: >Environment: >Description: An inner class should have the same access as its enclosing class with regard to accessing methods and fields in other top level classes. Protected methods in a superclass of the enclosing class should be accessible from the inner class, even if the superclass is in a foreign package. But gcj gets the following error: $ gcj AnonTest.java pkg1/Base.java -o at --main=AnonTest AnonTest.java: In class `AnonTest$Inner': AnonTest.java: In method `test()': AnonTest.java:9: Can't access protected method `void pkg1.Base.a()' from `AnonTest$Inner'. a(); ^ 1 error >How-To-Repeat: Try to compile this test case: // AnonTest.java import pkg1.*; public class AnonTest extends Base { class Inner { void test() { a(); } } } // pkg1/Base.java package pkg1; public class Base { protected void a() {} } >Fix: >Release-Note: >Audit-Trail: Formerly PR gcj/249 State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Thu Jul 13 20:19:09 2000 State-Changed-Why: Thanks for the report. I attached a patch. From: apbianco@cygnus.com To: apbianco@cygnus.com, bryce@albatross.co.nz, java-gnats@sourceware.cygnus.com Cc: Subject: Re: gcj/249 Date: 14 Jul 2000 03:19:10 -0000 Synopsis: Innerclass cannot access protected method declared in foreign-package superclass of parent State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Thu Jul 13 20:19:09 2000 State-Changed-Why: Thanks for the report. I attached a patch. http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=249&database=java State-Changed-From-To: feedback->closed State-Changed-By: apbianco State-Changed-When: Thu Jul 20 17:05:56 2000 State-Changed-Why: I checked in a jumbo patch that fixes gcj/249 (among other PRs:) http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00801.html From: apbianco@cygnus.com To: apbianco@cygnus.com, bryce@albatross.co.nz, java-gnats@sourceware.cygnus.com Cc: Subject: Re: gcj/249 Date: 21 Jul 2000 00:05:56 -0000 Synopsis: Innerclass cannot access protected method declared in foreign-package superclass of parent State-Changed-From-To: feedback->closed State-Changed-By: apbianco State-Changed-When: Thu Jul 20 17:05:56 2000 State-Changed-Why: I checked in a jumbo patch that fixes gcj/249 (among other PRs:) http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00801.html http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=249&database=java >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch" MjAwMC0wNy0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+ CgoJKiBwYXJzZS55IChub3RfYWNjZXNzaWJsZV9wKTogQWNjZXNzIGdyYW50ZWQgdG8gaW5uZXJj bGFzc2VzCgkoaW5kaXJlY3RseSkgZXh0ZW5kaW5nIHRoZSByZWZlcmVuY2UgdHlwZS4gRml4ZXMg Z2NqLzI0OS4KCkluZGV4OiBwYXJzZS55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtdSAtcCBwYXJzZS55Ci0t LSBvbGQtcGFyc2UueSBUaHUgSnVsIDEzIDE2OjM5OjI4IDIwMDAKKysrIHBhcnNlLnkgICAgIFRo dSBKdWwgMTMgMjA6MDQ6MTQgMjAwMApAQCAtOTMxMCw3ICs5MzEwLDE3IEBAIG5vdF9hY2Nlc3Np YmxlX3AgKHJlZmVyZW5jZSwgbWVtYmVyLCBmcm8KICAgICAgICByZXR1cm4gMDsKIAogICAgICAg LyogT3RoZXJ3aXNlLCBhY2Nlc3MgaXMgZ3JhbnRlZCBpZiBvY2N1cmluZyBmcm9tIHRoZSBjbGFz cyB3aGVyZQotICAgICAgICBtZW1iZXIgaXMgZGVjbGFyZWQgb3IgYSBzdWJjbGFzcyBvZiBpdCAq LworICAgICAgICBtZW1iZXIgaXMgZGVjbGFyZWQgb3IgYSBzdWJjbGFzcyBvZiBpdC4gRmluZCB0 aGUgcmlnaHQKKyAgICAgICAgY29udGV4dCB0byBwZXJmb3JtIHRoZSBjaGVjayAqLworICAgICAg aWYgKFBVUkVfSU5ORVJfQ0xBU1NfVFlQRV9QIChyZWZlcmVuY2UpKQorICAgICAgIHsKKyAgICAg ICAgIHdoaWxlIChJTk5FUl9DTEFTU19UWVBFX1AgKHJlZmVyZW5jZSkpCisgICAgICAgICAgIHsK KyAgICAgICAgICAgICBpZiAoaW5oZXJpdHNfZnJvbV9wIChyZWZlcmVuY2UsIERFQ0xfQ09OVEVY VCAobWVtYmVyKSkpCisgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICByZWZl cmVuY2UgPSBUUkVFX1RZUEUgKERFQ0xfQ09OVEVYVCAoVFlQRV9OQU1FIChyZWZlcmVuY2UpKSk7 CisgICAgICAgICAgIH0KKyAgICAgICB9CiAgICAgICBpZiAoaW5oZXJpdHNfZnJvbV9wIChyZWZl cmVuY2UsIERFQ0xfQ09OVEVYVCAobWVtYmVyKSkpCiAgICAgICAgcmV0dXJuIDA7CiAgICAgICBy ZXR1cm4gMTsK