| /* | |
| * @test /nodynamiccopyright/ | |
| * @bug 4249111 | |
| * @summary 'new' of inner class should not be allowed unless outer is constructed | |
| * | |
| * @compile/fail/ref=NewBeforeOuterConstructed.out -XDrawDiagnostics NewBeforeOuterConstructed.java | |
| */ | |
| import java.io.*; | |
| public class NewBeforeOuterConstructed extends PrintStream { | |
| private class NullOutputStream extends OutputStream { | |
| public NullOutputStream() { | |
| super(); | |
| } | |
| public void write(int b) { } | |
| public void write(byte b[]) { } | |
| public void write(byte b[], int off, int len) { } | |
| public void flush() { } | |
| public void close() { } | |
| } | |
| public NewBeforeOuterConstructed() { | |
| // The 'new' below is illegal, as the outer | |
| // constructor has not been called when the | |
| // implicit reference to 'this' is evaluated | |
| // during the new instance expression. | |
| super(new NullOutputStream()); | |
| } | |
| } |