gcj/48: Compiler fails to catch constructor problem
green@cygnus.com
green@cygnus.com
Tue Sep 21 13:30:00 GMT 1999
>Number: 48
>Category: gcj
>Synopsis: Compiler fails to catch constructor problem
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: apbianco
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Sep 21 13:30:01 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator: Anthony Green
>Release: 2.96 (trunk)
>Organization:
>Environment:
>Description:
The compiler fails to catch the use of `this' in a
constructor before calling the superclass constructor.
>How-To-Repeat:
The following patch corrects invalid
code in java/io/OutputStreamWriter.java.
Revert this patch. The compiler should issue an error.
Compiling it with javac produces:
./java/io/OutputStreamWriter.java:35: Can't reference this before the superclass constructor has been called.
super((this.out = (out instanceof BufferedOutputStream
Index: java/io/OutputStreamWriter.java
===================================================================
RCS file: /cvs/java/libgcj/libjava/java/io/OutputStreamWriter.java,v
retrieving revision 1.2
diff -u -r1.2 OutputStreamWriter.java
--- OutputStreamWriter.java 1999/04/16 18:35:01 1.2
+++ OutputStreamWriter.java 1999/09/21 19:44:32
@@ -32,9 +32,11 @@
private OutputStreamWriter(OutputStream out, UnicodeToBytes encoder)
{
- super((this.out = (out instanceof BufferedOutputStream
- ? (BufferedOutputStream) out
- : new BufferedOutputStream(out, 250))));
+ BufferedOutputStream buf = (out instanceof BufferedOutputStream
+ ? (BufferedOutputStream) out
+ : new BufferedOutputStream(out, 250));
+ super (buf);
+ this.out = buf;
this.converter = encoder;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Java-prs
mailing list