public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: jmr@fulcrummicro.com
To: gcc-gnats@gcc.gnu.org
Subject: java/7298: Can't call method of outer class from inner constructor
Date: Fri, 12 Jul 2002 18:46:00 -0000	[thread overview]
Message-ID: <200207130140.g6D1e2121411@churchill.internal.avlsi.com> (raw)


>Number:         7298
>Category:       java
>Synopsis:       Can't call method of outer class from inner constructor
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 12 18:46:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Jesse Rosenstock
>Release:        3.2 20020710 (experimental)
>Organization:
>Environment:
System: Linux churchill 2.4.3-12 #1 Fri Jun 8 15:05:56 EDT 2001 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ./configure --prefix=/home/user/jmr/app/gcc
>Description:
	A method of an outer class cannot be called from the inner class
        constructor before the constructor for the inner class's superclass
        has been called.  The outer class has been constructed, so this
        should be allowed.
>How-To-Repeat:

	X.java:

        public class X {
            Object f() {
                return null;
            }
            class XX {
                XX() {
                    this(f());
                }

                XX(Object o) {
                }
            }
        }

        gcj -v X.java yields:

        Reading specs from /home/user/jmr/app/gcc/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
        Reading specs from /home/user/jmr/app/gcc/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../../libgcj.spec
        rename spec lib to liborig
        Configured with: ./configure --prefix=/home/user/jmr/app/gcc
        Thread model: single
        gcc version 3.2 20020710 (experimental)
         /home/user/jmr/app/gcc/lib/gcc-lib/i686-pc-linux-gnu/3.2/jc1 X.java -fno-use-divide-subroutine -fuse-boehm-gc -fnon-call-exceptions -fkeep-inline-functions -quiet -dumpbase X.java -g1 -version -o /tmp/ccZQXE2X.s
        GNU Java version 3.2 20020710 (experimental) (i686-pc-linux-gnu)
                compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.1 2.96-85).
        Class path starts here:
            /home/user/jmr/gcj_test/inner2/
            /home/user/jmr/app/gcc/share/java/libgcj-3.2.jar/ (system) (zip)
        X.java: In class `X$XX':
        X.java: In constructor `(X)':
        X.java:7: error: Can't reference `this' before the superclass constructor has been called.
                       this(f());
                            ^
        1 error

        This works with javac.
>Fix:
	This could be worked around by passing a reference to the outer
        class into the constructor.

        public class X {
            Object f() {
                return null;
            }
            class XX {
                XX(X x) {
                    this(x.f());
                }

                XX(Object o) {
                }
            }
        }
>Release-Note:
>Audit-Trail:
>Unformatted:


             reply	other threads:[~2002-07-13  1:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-12 18:46 jmr [this message]
2003-05-12 20:26 Dara Hazeghi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200207130140.g6D1e2121411@churchill.internal.avlsi.com \
    --to=jmr@fulcrummicro.com \
    --cc=gcc-gnats@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).