The following legal code is not accepted: :::::::::::::: I.java :::::::::::::: interface I { class Inner {} } :::::::::::::: Test.java :::::::::::::: class Test implements I { void test(Inner i) { } } Test.java:2: Type `Inner' not found in the declaration of the argument `i' of method `test'. void test(Inner i) { } ^ 1 error Inner should be visible in Test since it is a class member of the interface I that Test implements. Release: gcc version 2.95.3 20010219 (prerelease)
From: Dara Hazeghi <dhazeghi@yahoo.com> To: gcc-gnats@gcc.gnu.org Cc: Subject: Re: java/2499: Class members should be inherited from implemented interfaces Date: Mon, 12 May 2003 13:34:38 -0700 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- trail&database=gcc&pr=2499 Hello, I can confirm that this behavior still occurs on gcc 3.2, 3.3 branch and mainline (20030511) on i686-linux. Dara
confirmed on mainline (20030523).
*** Bug 13513 has been marked as a duplicate of this bug. ***
Very related to bug 9869.
*** Bug 9869 has been marked as a duplicate of this bug. ***
I should note that it now ICE on the mainline.
And now it just rejects it.
*** Bug 23596 has been marked as a duplicate of this bug. ***
Another testcase for the same issue: interface I { interface Inner {} } class Test implements I { void test(Inner i) { } } Which comes from PR 23596.
All gcj front end bugs have been fixed by the gcj-eclipse branch merge. I'm mass-closing the affected PRs. If you believe one of these was closed in error, please reopen it with a note explaining why. Thanks.