From mboxrd@z Thu Jan 1 00:00:00 1970 From: mdejong@cygnus.com To: java-gnats@sourceware.cygnus.com Subject: java/1176: gcj does not look in superclass scope for inner classes Date: Wed, 20 Dec 2000 12:21:00 -0000 Message-id: <20000409062624.25059.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg00956.html List-Id: >Number: 1176 >Category: java >Synopsis: gcj does not look in superclass scope for inner classes >Confidential: no >Severity: serious >Priority: medium >Responsible: apbianco >State: closed >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 12:17:00 PST 2000 >Closed-Date: Fri Apr 21 16:04:39 PDT 2000 >Last-Modified: Fri Apr 21 16:16:00 PDT 2000 >Originator: Mo >Release: egcs CVS as of Sat Apr 8 2000 >Organization: >Environment: I was running this on a Red Hat 5.2 box (Intel). I compile egcs and libjava from the CVS today (Sat Apr 8 2000). >Description: I tried to compile the following two classes. // File InnerClass.java public class InnerClass { public class MyInner {} } // File InnerClass_Test.java public class InnerClass_Test extends InnerClass { void foo() { MyInner mi = new MyInner(); } } I can compile them just fine with javac and jikes, but gcj does not seem to know that it should look inside the scope of it's superclass for class names. % javac InnerClass.java InnerClass_Test.java % jikes InnerClass.java InnerClass_Test.java % rm *.class % gcj -c InnerClass.java InnerClass_Test.java InnerClass_Test.java:5: Type `MyInner' not found in the declaration of the local variable `mi'. MyInner mi = new MyInner(); Now here is where it gets a little strange. If you do the following, you get a different error. % gcj -C InnerClass.java % ls *.class InnerClass$MyInner.class InnerClass.class % gcj -C InnerClass_Test.java InnerClass_Test.java: In class `InnerClass_Test': InnerClass_Test.java: In method `foo()': InnerClass_Test.java:5: No enclosing instance for inner class `InnerClass$MyInner' is in scope; an explicit one must be provided when creating this inner class. MyInner mi = new MyInner(); ^ 1 error Either way, gcj is broken. It should look in the super class to find the class in the first case, and it should not give the second error if a .class file for the super class is found. >How-To-Repeat: See above. >Fix: >Release-Note: >Audit-Trail: Formerly PR gcj/194 State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Wed Apr 19 19:16:55 2000 State-Changed-Why: Can you try this patch? From: apbianco@cygnus.com To: apbianco@cygnus.com, java-gnats@sourceware.cygnus.com, mdejong@cygnus.com Cc: Subject: Re: gcj/194 Date: 20 Apr 2000 02:16:55 -0000 Synopsis: gcj does not look in superclass scope for inner classes State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Wed Apr 19 19:16:55 2000 State-Changed-Why: Can you try this patch? http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=194&database=java State-Changed-From-To: feedback->open State-Changed-By: apbianco State-Changed-When: Wed Apr 19 19:27:31 2000 State-Changed-Why: Oops. Sorry. From: apbianco@cygnus.com To: apbianco@cygnus.com, java-gnats@sourceware.cygnus.com, mdejong@cygnus.com Cc: Subject: Re: gcj/194 Date: 20 Apr 2000 02:27:31 -0000 Synopsis: gcj does not look in superclass scope for inner classes State-Changed-From-To: feedback->open State-Changed-By: apbianco State-Changed-When: Wed Apr 19 19:27:31 2000 State-Changed-Why: Oops. Sorry. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=194&database=java State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Thu Apr 20 00:29:15 2000 State-Changed-Why: There is a patch. From: apbianco@cygnus.com To: apbianco@cygnus.com, java-gnats@sourceware.cygnus.com, mdejong@cygnus.com Cc: Subject: Re: gcj/194 Date: 20 Apr 2000 07:29:15 -0000 Synopsis: gcj does not look in superclass scope for inner classes State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Thu Apr 20 00:29:15 2000 State-Changed-Why: There is a patch. http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=194&database=java From: Mo DeJong To: apbianco@cygnus.com Cc: java-gnats@sourceware.cygnus.com Subject: Re: gcj/194 Date: Thu, 20 Apr 2000 20:22:05 -0700 (PDT) I tested the patch for 194 and it seems to be working just fine. Mo Dejong Red Hat Inc. On 20 Apr 2000 apbianco@cygnus.com wrote: > Synopsis: gcj does not look in superclass scope for inner classes > > State-Changed-From-To: open->feedback > State-Changed-By: apbianco > State-Changed-When: Thu Apr 20 00:29:15 2000 > State-Changed-Why: > There is a patch. > > http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=194&database=java > State-Changed-From-To: feedback->closed State-Changed-By: apbianco State-Changed-When: Fri Apr 21 16:04:39 2000 State-Changed-Why: I checked in the following patch: http://gcc.gnu.org/ml/gcc-patches/2000-04/msg00843.html From: apbianco@cygnus.com To: apbianco@cygnus.com, java-gnats@sourceware.cygnus.com, mdejong@cygnus.com Cc: Subject: Re: gcj/194 Date: 21 Apr 2000 23:04:39 -0000 Synopsis: gcj does not look in superclass scope for inner classes State-Changed-From-To: feedback->closed State-Changed-By: apbianco State-Changed-When: Fri Apr 21 16:04:39 2000 State-Changed-Why: I checked in the following patch: http://gcc.gnu.org/ml/gcc-patches/2000-04/msg00843.html http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=194&database=java >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="InnerClass.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="InnerClass.java" Ly8gRmlsZSBJbm5lckNsYXNzLmphdmEKCnB1YmxpYyBjbGFzcyBJbm5lckNsYXNzIHsKICAgIHB1 YmxpYyBjbGFzcyBNeUlubmVyIHt9Cn0K----gnatsweb-attachment---- Content-Type: application/octet-stream; name="194-patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="194-patch" MjAwMC0wNC0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+ CgoJKiBwYXJzZS5oIChJTk5FUl9FTkNMT1NJTkdfU0NPUEVfQ0hFQ0spOiBJbW1lZGlhdGUgaW5u ZXIgY2xhc3NlcwoJb2YgZGlyZWN0bHkgaW5oZXJpdGVkIHR5cGUgY29uc2lkZXJlZCBpbiBzY29w ZS4KCSogcGFyc2UueSAoZG9fcmVzb2x2ZV9jbGFzcyk6IFNlYXJjaCBpbmhlcml0ZWQgY2xhc3Nl cyBmb3IgaW5uZXIKCWNsYXNzZXMuCgpJbmRleDogcGFyc2UuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvY3ZzL2djYy9lZ2NzL2djYy9qYXZhL3BhcnNlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu NDkKZGlmZiAtdSAtcCAtcjEuNDkgcGFyc2UuaAotLS0gcGFyc2UuaAkyMDAwLzA0LzA2IDAwOjQz OjI3CTEuNDkKKysrIHBhcnNlLmgJMjAwMC8wNC8yMCAwNjozNTozMwpAQCAtODI3LDEwICs4Mjcs MTIgQEAgc3RydWN0IHBhcnNlcl9jdHh0IHsKICAgIGNvbnRleHQuICAqLwogI2RlZmluZSBJTk5F Ul9FTkNMT1NJTkdfU0NPUEVfQ0hFQ0soVCkJCQkJCVwKICAgKElOTkVSX0NMQVNTX1RZUEVfUCAo KFQpKSAmJiAhQU5PTllNT1VTX0NMQVNTX1AgKChUKSkJCQlcCi0gICAvKiBXZSBoYXZlIGEgdGhp cyBhbmQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZSAqLwkJCVwKICAgICYmICgoY3VycmVudF90aGlz CQkJCQkJCVwKKwkvKiBXZSBoYXZlIGEgdGhpcyBhbmQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZSAq LwkJCVwKIAkmJiAoREVDTF9DT05URVhUIChUWVBFX05BTUUgKChUKSkpCQkJCVwKLQkgICAgIT0g VFlQRV9OQU1FIChUUkVFX1RZUEUgKFRSRUVfVFlQRSAoY3VycmVudF90aGlzKSkpKSkJXAorCSAg ICAhPSBUWVBFX05BTUUgKFRSRUVfVFlQRSAoVFJFRV9UWVBFIChjdXJyZW50X3RoaXMpKSkpCVwK KwkmJiAhaW5oZXJpdHNfZnJvbV9wIChUUkVFX1RZUEUgKFRSRUVfVFlQRSAoY3VycmVudF90aGlz KSksCVwKKwkJCSAgICAgVFJFRV9UWVBFIChERUNMX0NPTlRFWFQgKFRZUEVfTkFNRSAoVCkpKSkp CVwKICAgICAgICAvKiBXZSBkb24ndCBoYXZlIGEgdGhpcy4gKi8JCQkJCVwKICAgICAgICB8fCAh Y3VycmVudF90aGlzKSkKIApJbmRleDogcGFyc2UueQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz L2djYy9lZ2NzL2djYy9qYXZhL3BhcnNlLnksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUyCmRp ZmYgLXUgLXAgLXIxLjE1MiBwYXJzZS55Ci0tLSBwYXJzZS55CTIwMDAvMDQvMjAgMDI6NTI6MjYJ MS4xNTIKKysrIHBhcnNlLnkJMjAwMC8wNC8yMCAwNjozNjowNwpAQCAtNTM5MCw4ICs1NDA1LDMw IEBAIGRvX3Jlc29sdmVfY2xhc3MgKGVuY2xvc2luZywgY2xhc3NfdHlwZSwKICAgLyogTWF5YmUg c29tZSBjb2RlIGhlcmUgc2hvdWxkIGJlIGFkZGVkIHRvIGxvYWQgdGhlIGNsYXNzIG9yCiAgICAg IHNvbWV0aGluZywgYXQgbGVhc3QgaWYgdGhlIGNsYXNzIGlzbid0IGFuIGlubmVyIGNsYXNzIGFu ZCBlbmRlZAogICAgICBiZWluZyBsb2FkZWQgZnJvbSBjbGFzcyBmaWxlLiBGSVhNRS4gKi8KLSAg aWYgKChuZXdfY2xhc3NfZGVjbCA9IGZpbmRfYXNfaW5uZXJfY2xhc3MgKGVuY2xvc2luZywgY2xh c3NfdHlwZSwgY2wpKSkKLSAgICByZXR1cm4gbmV3X2NsYXNzX2RlY2w7CisgIHdoaWxlIChlbmNs b3NpbmcpCisgICAgeworICAgICAgaWYgKChuZXdfY2xhc3NfZGVjbCA9IGZpbmRfYXNfaW5uZXJf Y2xhc3MgKGVuY2xvc2luZywgY2xhc3NfdHlwZSwgY2wpKSkKKyAgICAgICAgcmV0dXJuIG5ld19j bGFzc19kZWNsOworICAgICAgLyogTm93IGdvIHRvIHRoZSB1cHBlciBjbGFzcyAqLworICAgICAg ZW5jbG9zaW5nID0gQ0xBU1NUWVBFX1NVUEVSIChUUkVFX1RZUEUgKGVuY2xvc2luZykpOworICAg ICAgaWYgKGVuY2xvc2luZyA9PSBvYmplY3RfdHlwZV9ub2RlKQorICAgICAgICBlbmNsb3Npbmcg PSBOVUxMOworICAgICAgaWYgKCFlbmNsb3NpbmcpCisJY29udGludWU7CisgICAgICBlbHNlIGlm IChUUkVFX0NPREUgKGVuY2xvc2luZykgIT0gUkVDT1JEX1RZUEUpCisgICAgICAgIHsKKyAgICAg ICAgICB0cmVlIG5hbWU7CisgICAgICAgICAgaWYgKFRSRUVfQ09ERSAoZW5jbG9zaW5nKSA9PSBJ REVOVElGSUVSX05PREUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIEJVSUxEX1BUUl9G Uk9NX05BTUUgKG5hbWUsIGVuY2xvc2luZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgbmFtZSA9IGVuY2xvc2luZzsKKyAgICAgICAgICBlbmNsb3NpbmcgPSBk b19yZXNvbHZlX2NsYXNzIChOVUxMLCBuYW1lLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgfQorICAg ICAgZWxzZQorICAgICAgICBlbmNsb3NpbmcgPSBUWVBFX05BTUUgKGVuY2xvc2luZyk7CisgICAg fQogCiAgIC8qIDEtIENoZWNrIGZvciB0aGUgdHlwZSBpbiBzaW5nbGUgaW1wb3J0cyAqLwogICBp ZiAoZmluZF9pbl9pbXBvcnRzIChjbGFzc190eXBlKSkK