--- old/src/java.base/share/classes/java/io/Reader.java 2018-06-15 08:42:57.338051549 +0200 +++ new/src/java.base/share/classes/java/io/Reader.java 2018-06-15 08:42:57.236051550 +0200 @@ -63,13 +63,12 @@ * *

While the stream is open, the {@code read()}, {@code read(char[])}, * {@code read(char[], int, int)}, {@code read(Charbuffer)}, {@code - * ready())}, {@code skip(long)}, and {@code transferTo()} methods all - * behave as if end of stream has been reached. After the stream has been + * ready()}, {@code skip(long)}, and {@code transferTo()} methods all + * behave as if end of stream has been reached. After the stream has been * closed, these methods all throw {@code IOException}. * *

The {@code markSupported()} method returns {@code false}. The - * {@code mark()} method does nothing, and the {@code reset()} method - * throws {@code IOException}. + * {@code mark()} and {@code reset()} methods throw an {@code IOException}. * *

The {@link #lock object} used to synchronize operations on the * returned {@code Reader} is not specified. @@ -115,6 +114,12 @@ } @Override + public boolean ready() throws IOException { + ensureOpen(); + return false; + } + + @Override public long skip(long n) throws IOException { ensureOpen(); return 0L; --- old/test/jdk/java/io/Reader/NullReader.java 2018-06-15 08:42:57.626051548 +0200 +++ new/test/jdk/java/io/Reader/NullReader.java 2018-06-15 08:42:57.525051548 +0200 @@ -35,7 +35,7 @@ /* * @test - * @bug 8196298 + * @bug 8196298 8204930 * @run testng NullReader * @summary Check for expected behavior of Reader.nullReader(). */ @@ -96,6 +96,11 @@ } @Test(groups = "open") + public static void testReady() throws IOException { + assertFalse(openReader.ready()); + } + + @Test(groups = "open") public static void testSkip() throws IOException { assertEquals(0, openReader.skip(1), "skip() != 0"); } @@ -129,6 +134,11 @@ } @Test(groups = "closed", expectedExceptions = IOException.class) + public static void testReadyClosed() throws IOException { + closedReader.ready(); + } + + @Test(groups = "closed", expectedExceptions = IOException.class) public static void testSkipClosed() throws IOException { closedReader.skip(1); }