public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* java/8432: Misleading error message for undeclared variable in inner class
@ 2002-11-02 17:36 jmr
  0 siblings, 0 replies; only message in thread
From: jmr @ 2002-11-02 17:36 UTC (permalink / raw)
  To: gcc-gnats


>Number:         8432
>Category:       java
>Synopsis:       Misleading error message for undeclared variable in inner class
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Nov 02 17:36:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Jesse Rosenstock
>Release:        3.3 20021101 (experimental)
>Organization:
>Environment:
System: Linux churchill 2.4.3-12 #1 Fri Jun 8 15:05:56 EDT 2001 i686 unknown
Architecture: i686

        <machine, os, target, libraries (multiple lines)>
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc/configure --prefix=/home/user/jmr/app/gcc --enable-languages=c++,java --enable-threads=posix --enable-shared --with-as=/home/user/jmr/app/binutils/bin/as --with-ld=/home/user/jmr/app/binutils/bin/ld : (reconfigured)  : (reconfigured)  : (reconfigured)  : (reconfigured)  : (reconfigured)  : (reconfigured)  : (reconfigured)
>Description:
If a variable isn't declared in an inner class, an error message is issued saying that the local variable must be declared final.  It would be better to say that the variable is undeclared.
>How-To-Repeat:
; cat InnerStaticFinal.java
public class InnerStaticFinal {
    private static final class Inner extends Base {
        private Inner () {
            super (foo);
        }
    }
}

; cat Base.java
public class Base {
    public Base (Object o) {
    }
}

; gcj Base.java InnerStaticFinal.java 
InnerStaticFinal.java: In class `InnerStaticFinal$Inner':
InnerStaticFinal.java: In constructor `()':
InnerStaticFinal.java:4: error: Local variable `foo' can't be accessed from within the inner class `InnerStaticFinal$Inner' unless it is declared final.
               super (foo);
                      ^
1 error

; javac Base.java InnerStaticFinal.java 
InnerStaticFinal.java:4: cannot resolve symbol
symbol  : variable foo  
location: class InnerStaticFinal.Inner
            super (foo);
                   ^
1 error
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="InnerStaticFinal.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="InnerStaticFinal.java"

cHVibGljIGNsYXNzIElubmVyU3RhdGljRmluYWwgewogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwg
Y2xhc3MgSW5uZXIgZXh0ZW5kcyBCYXNlIHsKICAgICAgICBwcml2YXRlIElubmVyICgpIHsKICAg
ICAgICAgICAgc3VwZXIgKGZvbyk7CiAgICAgICAgfQogICAgfQp9Cg==


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-11-03  1:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-02 17:36 java/8432: Misleading error message for undeclared variable in inner class jmr

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).