From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10425 invoked by alias); 18 Nov 2002 04:06:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 10379 invoked by uid 71); 18 Nov 2002 04:06:01 -0000 Resent-Date: 18 Nov 2002 04:06:01 -0000 Resent-Message-ID: <20021118040601.10378.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, java-prs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, jmr@ugcs.caltech.edu Received: (qmail 7387 invoked by uid 61); 18 Nov 2002 04:01:43 -0000 Message-Id: <20021118040143.7386.qmail@sources.redhat.com> Date: Fri, 22 Nov 2002 14:01:00 -0000 From: jmr@ugcs.caltech.edu Reply-To: jmr@ugcs.caltech.edu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: java/8618: call to private constructor allowed for anonymous inner class X-SW-Source: 2002-11/txt/msg00862.txt.bz2 List-Id: >Number: 8618 >Category: java >Synopsis: call to private constructor allowed for anonymous inner class >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: accepts-illegal >Submitter-Id: net >Arrival-Date: Sun Nov 17 20:06:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Jesse Rosenstock >Release: gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7) >Organization: >Environment: >Description: Calls to private constructors are (incorrectly) allowed when creating an anonymous inner class. ; cat X.java public class X { public static void main(String[] args) { // new Y(); new Y() { }; // should be illegal } } ; cat Y.java public class Y { private Y() { } } ; gcj X.java Y.java --main=X gcj doesn't give an error, whereas Sun's javac does ; javac X.java X.java:4: Y() has private access in Y new Y() { }; ^ X.java:4: Y() has private access in Y new Y() { }; ^ 2 errors If you switch around which line is commented out in X.main, then gcj correctly gives an error: gcj X.java Y.java --main=X X.java:3: Can't access private constructor `Y.' from `X'. new Y(); ^ 1 error >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: