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