8186052: Fix a11y and HTML issues in the java.base/java.lang[.*] packages
Reviewed-by: smarks
--- a/jdk/src/java.base/share/classes/java/lang/Character.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Character.java Thu Aug 10 15:23:03 2017 -0700
@@ -9566,18 +9566,23 @@
* Determines if the specified character is ISO-LATIN-1 white space.
* This method returns {@code true} for the following five
* characters only:
- * <table class="borderless">
+ * <table class="striped">
* <caption style="display:none">truechars</caption>
+ * <thead>
+ * <tr><th scope="col">Character
+ * <th scope="col">Code
+ * <th scope="col">Name
+ * </thead>
* <tbody>
- * <tr><td>{@code '\t'}</td> <td>{@code U+0009}</td>
+ * <tr><th scope="row">{@code '\t'}</th> <td>{@code U+0009}</td>
* <td>{@code HORIZONTAL TABULATION}</td></tr>
- * <tr><td>{@code '\n'}</td> <td>{@code U+000A}</td>
+ * <tr><th scope="row">{@code '\n'}</th> <td>{@code U+000A}</td>
* <td>{@code NEW LINE}</td></tr>
- * <tr><td>{@code '\f'}</td> <td>{@code U+000C}</td>
+ * <tr><th scope="row">{@code '\f'}</th> <td>{@code U+000C}</td>
* <td>{@code FORM FEED}</td></tr>
- * <tr><td>{@code '\r'}</td> <td>{@code U+000D}</td>
+ * <tr><th scope="row">{@code '\r'}</th> <td>{@code U+000D}</td>
* <td>{@code CARRIAGE RETURN}</td></tr>
- * <tr><td>{@code ' '}</td> <td>{@code U+0020}</td>
+ * <tr><th scope="row">{@code ' '}</th> <td>{@code U+0020}</td>
* <td>{@code SPACE}</td></tr>
* </tbody>
* </table>
--- a/jdk/src/java.base/share/classes/java/lang/Class.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Class.java Thu Aug 10 15:23:03 2017 -0700
@@ -728,22 +728,22 @@
* one or more '{@code [}' characters representing the depth of the array
* nesting. The encoding of element type names is as follows:
*
- * <blockquote><table class="borderless">
+ * <blockquote><table class="striped">
* <caption style="display:none">Element types and encodings</caption>
* <thead>
- * <tr><th style="padding-right:3em;"> Element Type <th> Encoding
+ * <tr><th scope="col"> Element Type <th scope="col"> Encoding
* </thead>
- * <tbody>
- * <tr><td> boolean <td style="text-align:center"> Z
- * <tr><td> byte <td style="text-align:center"> B
- * <tr><td> char <td style="text-align:center"> C
- * <tr><td> class or interface
- * <td style="text-align:center"> L<i>classname</i>;
- * <tr><td> double <td style="text-align:center"> D
- * <tr><td> float <td style="text-align:center"> F
- * <tr><td> int <td style="text-align:center"> I
- * <tr><td> long <td style="text-align:center"> J
- * <tr><td> short <td style="text-align:center"> S
+ * <tbody style="text-align:left">
+ * <tr><th scope="row"> boolean <td style="text-align:center"> Z
+ * <tr><th scope="row"> byte <td style="text-align:center"> B
+ * <tr><th scope="row"> char <td style="text-align:center"> C
+ * <tr><th scope="row"> class or interface
+ * <td style="text-align:center"> L<i>classname</i>;
+ * <tr><th scope="row"> double <td style="text-align:center"> D
+ * <tr><th scope="row"> float <td style="text-align:center"> F
+ * <tr><th scope="row"> int <td style="text-align:center"> I
+ * <tr><th scope="row"> long <td style="text-align:center"> J
+ * <tr><th scope="row"> short <td style="text-align:center"> S
* </tbody>
* </table></blockquote>
*
--- a/jdk/src/java.base/share/classes/java/lang/Double.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Double.java Thu Aug 10 15:23:03 2017 -0700
@@ -255,25 +255,25 @@
*
* </ul>
*
- * <table class="plain">
+ * <table class="striped">
* <caption>Examples</caption>
* <thead>
- * <tr><th>Floating-point Value</th><th>Hexadecimal String</th>
+ * <tr><th scope="col">Floating-point Value</th><th scope="col">Hexadecimal String</th>
* </thead>
- * <tbody>
- * <tr><td>{@code 1.0}</td> <td>{@code 0x1.0p0}</td>
- * <tr><td>{@code -1.0}</td> <td>{@code -0x1.0p0}</td>
- * <tr><td>{@code 2.0}</td> <td>{@code 0x1.0p1}</td>
- * <tr><td>{@code 3.0}</td> <td>{@code 0x1.8p1}</td>
- * <tr><td>{@code 0.5}</td> <td>{@code 0x1.0p-1}</td>
- * <tr><td>{@code 0.25}</td> <td>{@code 0x1.0p-2}</td>
- * <tr><td>{@code Double.MAX_VALUE}</td>
+ * <tbody style="text-align:right">
+ * <tr><th scope="row">{@code 1.0}</th> <td>{@code 0x1.0p0}</td>
+ * <tr><th scope="row">{@code -1.0}</th> <td>{@code -0x1.0p0}</td>
+ * <tr><th scope="row">{@code 2.0}</th> <td>{@code 0x1.0p1}</td>
+ * <tr><th scope="row">{@code 3.0}</th> <td>{@code 0x1.8p1}</td>
+ * <tr><th scope="row">{@code 0.5}</th> <td>{@code 0x1.0p-1}</td>
+ * <tr><th scope="row">{@code 0.25}</th> <td>{@code 0x1.0p-2}</td>
+ * <tr><th scope="row">{@code Double.MAX_VALUE}</th>
* <td>{@code 0x1.fffffffffffffp1023}</td>
- * <tr><td>{@code Minimum Normal Value}</td>
+ * <tr><th scope="row">{@code Minimum Normal Value}</th>
* <td>{@code 0x1.0p-1022}</td>
- * <tr><td>{@code Maximum Subnormal Value}</td>
+ * <tr><th scope="row">{@code Maximum Subnormal Value}</th>
* <td>{@code 0x0.fffffffffffffp-1022}</td>
- * <tr><td>{@code Double.MIN_VALUE}</td>
+ * <tr><th scope="row">{@code Double.MIN_VALUE}</th>
* <td>{@code 0x0.0000000000001p-1022}</td>
* </tbody>
* </table>
--- a/jdk/src/java.base/share/classes/java/lang/Float.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Float.java Thu Aug 10 15:23:03 2017 -0700
@@ -256,25 +256,25 @@
*
* </ul>
*
- * <table class="plain">
+ * <table class="striped">
* <caption>Examples</caption>
* <thead>
- * <tr><th>Floating-point Value</th><th>Hexadecimal String</th>
+ * <tr><th scope="col">Floating-point Value</th><th scope="col">Hexadecimal String</th>
* </thead>
* <tbody>
- * <tr><td>{@code 1.0}</td> <td>{@code 0x1.0p0}</td>
- * <tr><td>{@code -1.0}</td> <td>{@code -0x1.0p0}</td>
- * <tr><td>{@code 2.0}</td> <td>{@code 0x1.0p1}</td>
- * <tr><td>{@code 3.0}</td> <td>{@code 0x1.8p1}</td>
- * <tr><td>{@code 0.5}</td> <td>{@code 0x1.0p-1}</td>
- * <tr><td>{@code 0.25}</td> <td>{@code 0x1.0p-2}</td>
- * <tr><td>{@code Float.MAX_VALUE}</td>
+ * <tr><th scope="row">{@code 1.0}</th> <td>{@code 0x1.0p0}</td>
+ * <tr><th scope="row">{@code -1.0}</th> <td>{@code -0x1.0p0}</td>
+ * <tr><th scope="row">{@code 2.0}</th> <td>{@code 0x1.0p1}</td>
+ * <tr><th scope="row">{@code 3.0}</th> <td>{@code 0x1.8p1}</td>
+ * <tr><th scope="row">{@code 0.5}</th> <td>{@code 0x1.0p-1}</td>
+ * <tr><th scope="row">{@code 0.25}</th> <td>{@code 0x1.0p-2}</td>
+ * <tr><th scope="row">{@code Float.MAX_VALUE}</th>
* <td>{@code 0x1.fffffep127}</td>
- * <tr><td>{@code Minimum Normal Value}</td>
+ * <tr><th scope="row">{@code Minimum Normal Value}</th>
* <td>{@code 0x1.0p-126}</td>
- * <tr><td>{@code Maximum Subnormal Value}</td>
+ * <tr><th scope="row">{@code Maximum Subnormal Value}</th>
* <td>{@code 0x0.fffffep-126}</td>
- * <tr><td>{@code Float.MIN_VALUE}</td>
+ * <tr><th scope="row">{@code Float.MIN_VALUE}</th>
* <td>{@code 0x0.000002p-126}</td>
* </tbody>
* </table>
--- a/jdk/src/java.base/share/classes/java/lang/String.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/String.java Thu Aug 10 15:23:03 2017 -0700
@@ -2208,29 +2208,29 @@
* <caption style="display:none">Split example showing regex, limit, and result</caption>
* <thead>
* <tr>
- * <th>Regex</th>
- * <th>Limit</th>
- * <th>Result</th>
+ * <th scope="col">Regex</th>
+ * <th scope="col">Limit</th>
+ * <th scope="col">Result</th>
* </tr>
* </thead>
* <tbody>
- * <tr><td style="text-align:center">:</td>
- * <td style="text-align:center">2</td>
+ * <tr><th scope="row" rowspan="3" style="font-weight:normal">:</th>
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">2</th>
* <td>{@code { "boo", "and:foo" }}</td></tr>
- * <tr><td style="text-align:center">:</td>
- * <td style="text-align:center">5</td>
+ * <tr><!-- : -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">5</th>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
- * <tr><td style="text-align:center">:</td>
- * <td style="text-align:center">-2</td>
+ * <tr><!-- : -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">-2</th>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
- * <td style="text-align:center">5</td>
+ * <tr><th scope="row" rowspan="3" style="font-weight:normal">o</th>
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">5</th>
* <td>{@code { "b", "", ":and:f", "", "" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
- * <td style="text-align:center">-2</td>
+ * <tr><!-- o -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">-2</th>
* <td>{@code { "b", "", ":and:f", "", "" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
- * <td style="text-align:center">0</td>
+ * <tr><!-- o -->
+ * <th scope="row" style="font-weight:normal; text-align:right; padding-right:1em">0</th>
* <td>{@code { "b", "", ":and:f" }}</td></tr>
* </tbody>
* </table></blockquote>
@@ -2336,14 +2336,14 @@
* <caption style="display:none">Split examples showing regex and result</caption>
* <thead>
* <tr>
- * <th>Regex</th>
- * <th>Result</th>
+ * <th scope="col">Regex</th>
+ * <th scope="col">Result</th>
* </tr>
* </thead>
* <tbody>
- * <tr><td style="text-align:center">:</td>
+ * <tr><th scope="row" style="text-weight:normal">:</th>
* <td>{@code { "boo", "and", "foo" }}</td></tr>
- * <tr><td style="text-align:center">o</td>
+ * <tr><th scope="row" style="text-weight:normal">o</th>
* <td>{@code { "b", "", ":and:f" }}</td></tr>
* </tbody>
* </table></blockquote>
@@ -2460,36 +2460,37 @@
* <caption style="display:none">Lowercase mapping examples showing language code of locale, upper case, lower case, and description</caption>
* <thead>
* <tr>
- * <th>Language Code of Locale</th>
- * <th>Upper Case</th>
- * <th>Lower Case</th>
- * <th>Description</th>
+ * <th scope="col">Language Code of Locale</th>
+ * <th scope="col">Upper Case</th>
+ * <th scope="col">Lower Case</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>tr (Turkish)</td>
- * <td>\u0130</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">\u0130</th>
* <td>\u0069</td>
* <td>capital letter I with dot above -> small letter i</td>
* </tr>
* <tr>
* <td>tr (Turkish)</td>
- * <td>\u0049</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">\u0049</th>
* <td>\u0131</td>
* <td>capital letter I -> small letter dotless i </td>
* </tr>
* <tr>
* <td>(all)</td>
- * <td>French Fries</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">French Fries</th>
* <td>french fries</td>
* <td>lowercased all chars in String</td>
* </tr>
* <tr>
* <td>(all)</td>
- * <td><img src="doc-files/capiota.gif" alt="capiota"><img src="doc-files/capchi.gif" alt="capchi">
+ * <th scope="row" style="font-weight:normal; text-align:left">
+ * <img src="doc-files/capiota.gif" alt="capiota"><img src="doc-files/capchi.gif" alt="capchi">
* <img src="doc-files/captheta.gif" alt="captheta"><img src="doc-files/capupsil.gif" alt="capupsil">
- * <img src="doc-files/capsigma.gif" alt="capsigma"></td>
+ * <img src="doc-files/capsigma.gif" alt="capsigma"></th>
* <td><img src="doc-files/iota.gif" alt="iota"><img src="doc-files/chi.gif" alt="chi">
* <img src="doc-files/theta.gif" alt="theta"><img src="doc-files/upsilon.gif" alt="upsilon">
* <img src="doc-files/sigma1.gif" alt="sigma"></td>
@@ -2546,34 +2547,34 @@
* <caption style="display:none">Examples of locale-sensitive and 1:M case mappings. Shows Language code of locale, lower case, upper case, and description.</caption>
* <thead>
* <tr>
- * <th>Language Code of Locale</th>
- * <th>Lower Case</th>
- * <th>Upper Case</th>
- * <th>Description</th>
+ * <th scope="col">Language Code of Locale</th>
+ * <th scope="col">Lower Case</th>
+ * <th scope="col">Upper Case</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>tr (Turkish)</td>
- * <td>\u0069</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">\u0069</th>
* <td>\u0130</td>
* <td>small letter i -> capital letter I with dot above</td>
* </tr>
* <tr>
* <td>tr (Turkish)</td>
- * <td>\u0131</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">\u0131</th>
* <td>\u0049</td>
* <td>small letter dotless i -> capital letter I</td>
* </tr>
* <tr>
* <td>(all)</td>
- * <td>\u00df</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">\u00df</th>
* <td>\u0053 \u0053</td>
* <td>small letter sharp s -> two letters: SS</td>
* </tr>
* <tr>
* <td>(all)</td>
- * <td>Fahrvergnügen</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">Fahrvergnügen</th>
* <td>FAHRVERGNÜGEN</td>
* <td></td>
* </tr>
--- a/jdk/src/java.base/share/classes/java/lang/System.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/System.java Thu Aug 10 15:23:03 2017 -0700
@@ -583,7 +583,7 @@
* system properties, a set of system properties is first created and
* initialized. This set of system properties always includes values
* for the following keys:
- * <table class="striped">
+ * <table class="striped" style="text-align:left">
* <caption style="display:none">Shows property keys and associated values</caption>
* <thead>
* <tr><th scope="col">Key</th>
@@ -1049,26 +1049,28 @@
* of corresponding severity.
* <br>The mapping is as follows:
* <br><br>
- * <table border="1">
+ * <table class="striped">
* <caption>System.Logger Severity Level Mapping</caption>
- * <tr><td><b>System.Logger Levels</b></td>
- * <td>{@link Logger.Level#ALL ALL}</td>
- * <td>{@link Logger.Level#TRACE TRACE}</td>
- * <td>{@link Logger.Level#DEBUG DEBUG}</td>
- * <td>{@link Logger.Level#INFO INFO}</td>
- * <td>{@link Logger.Level#WARNING WARNING}</td>
- * <td>{@link Logger.Level#ERROR ERROR}</td>
- * <td>{@link Logger.Level#OFF OFF}</td>
- * </tr>
- * <tr><td><b>java.util.logging Levels</b></td>
- * <td>{@link java.util.logging.Level#ALL ALL}</td>
- * <td>{@link java.util.logging.Level#FINER FINER}</td>
- * <td>{@link java.util.logging.Level#FINE FINE}</td>
- * <td>{@link java.util.logging.Level#INFO INFO}</td>
- * <td>{@link java.util.logging.Level#WARNING WARNING}</td>
- * <td>{@link java.util.logging.Level#SEVERE SEVERE}</td>
- * <td>{@link java.util.logging.Level#OFF OFF}</td>
- * </tr>
+ * <thead>
+ * <tr><th scope="col">System.Logger Levels</th>
+ * <th scope="col">java.util.logging Levels</th>
+ * </thead>
+ * <tbody>
+ * <tr><th scope="row">{@link Logger.Level#ALL ALL}</th>
+ * <td>{@link java.util.logging.Level#ALL ALL}</td>
+ * <tr><th scope="row">{@link Logger.Level#TRACE TRACE}</th>
+ * <td>{@link java.util.logging.Level#FINER FINER}</td>
+ * <tr><th scope="row">{@link Logger.Level#DEBUG DEBUG}</th>
+ * <td>{@link java.util.logging.Level#FINE FINE}</td>
+ * <tr><th scope="row">{@link Logger.Level#INFO INFO}</th>
+ * <td>{@link java.util.logging.Level#INFO INFO}</td>
+ * <tr><th scope="row">{@link Logger.Level#WARNING WARNING}</th>
+ * <td>{@link java.util.logging.Level#WARNING WARNING}</td>
+ * <tr><th scope="row">{@link Logger.Level#ERROR ERROR}</th>
+ * <td>{@link java.util.logging.Level#SEVERE SEVERE}</td>
+ * <tr><th scope="row">{@link Logger.Level#OFF OFF}</th>
+ * <td>{@link java.util.logging.Level#OFF OFF}</td>
+ * </tbody>
* </table>
*
* @since 9
--- a/jdk/src/java.base/share/classes/java/lang/Thread.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Thread.java Thu Aug 10 15:23:03 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -347,7 +347,7 @@
* the calling thread indicates to the runtime that it is busy-waiting.
* The runtime may take action to improve the performance of invoking
* spin-wait loop constructions.
- * <p>
+ *
* @apiNote
* As an example consider a method in a class that spins in a loop until
* some flag is set outside of that method. A call to the {@code onSpinWait}
@@ -373,7 +373,7 @@
* method was not called at all. However on some architectures the Java
* Virtual Machine may issue the processor instructions to address such
* code patterns in a more beneficial way.
- * <p>
+ *
* @since 9
*/
@HotSpotIntrinsicCandidate
--- a/jdk/src/java.base/share/classes/java/lang/invoke/LambdaMetafactory.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/LambdaMetafactory.java Thu Aug 10 15:23:03 2017 -0700
@@ -149,24 +149,24 @@
* capture argument (corresponding to the receiver) must be non-null.
*
* <p>A type Q is considered adaptable to S as follows:
- * <table class="borderless">
+ * <table class="striped">
* <caption style="display:none">adaptable types</caption>
* <thead>
- * <tr><th>Q</th><th>S</th><th>Link-time checks</th><th>Invocation-time checks</th></tr>
+ * <tr><th scope="col">Q</th><th scope="col">S</th><th scope="col">Link-time checks</th><th scope="col">Invocation-time checks</th></tr>
* </thead>
* <tbody>
* <tr>
- * <td>Primitive</td><td>Primitive</td>
+ * <th scope="row">Primitive</th><th scope="row">Primitive</th>
* <td>Q can be converted to S via a primitive widening conversion</td>
* <td>None</td>
* </tr>
* <tr>
- * <td>Primitive</td><td>Reference</td>
+ * <th scope="row">Primitive</th><th scope="row">Reference</th>
* <td>S is a supertype of the Wrapper(Q)</td>
* <td>Cast from Wrapper(Q) to S</td>
* </tr>
* <tr>
- * <td>Reference</td><td>Primitive</td>
+ * <th scope="row">Reference</th><th scope="row">Primitive</th>
* <td>for parameter types: Q is a primitive wrapper and Primitive(Q)
* can be widened to S
* <br>for return types: If Q is a primitive wrapper, check that
@@ -175,7 +175,7 @@
* for example Number for numeric types</td>
* </tr>
* <tr>
- * <td>Reference</td><td>Reference</td>
+ * <th scope="row">Reference</th><th scope="row">Reference</th>
* <td>for parameter types: S is a supertype of Q
* <br>for return types: none</td>
* <td>Cast from Q to S</td>
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandle.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandle.java Thu Aug 10 15:23:03 2017 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -889,7 +889,7 @@
* <p>
* This method behaves very much like {@link #asSpreader(Class, int)}, but accepts an additional {@code spreadArgPos}
* argument to indicate at which position in the parameter list the spreading should take place.
- * <p>
+ *
* @apiNote Example:
* <blockquote><pre>{@code
MethodHandle compare = LOOKUP.findStatic(Objects.class, "compare", methodType(int.class, Object.class, Object.class, Comparator.class));
@@ -1094,7 +1094,7 @@
* This method behaves very much like {@link #asCollector(Class, int)}, but differs in that its {@code
* collectArgPos} argument indicates at which position in the parameter list arguments should be collected. This
* index is zero-based.
- * <p>
+ *
* @apiNote Examples:
* <blockquote><pre>{@code
StringWriter swr = new StringWriter();
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java Thu Aug 10 15:23:03 2017 -0700
@@ -3353,7 +3353,7 @@
* That is, it returns a zero primitive value, a {@code null}, or {@code void}.
* <p>The returned method handle is equivalent to
* {@code dropArguments(zero(type.returnType()), 0, type.parameterList())}.
- * <p>
+ *
* @apiNote Given a predicate and target, a useful "if-then" construct can be produced as
* {@code guardWithTest(pred, target, empty(target.type())}.
* @param type the type of the desired method handle
@@ -3676,7 +3676,7 @@
* Given these assumptions, the result of an invocation of {@code dropArgumentsToMatch} will have the parameter type
* list {@code S..., P..., M..., A...}, with the {@code P} and {@code A} types inserted as if by
* {@link #dropArguments(MethodHandle, int, Class[])}.
- * <p>
+ *
* @apiNote
* Two method handles whose argument lists are "effectively identical" (i.e., identical in a common prefix) may be
* mutually converted to a common type by two calls to {@code dropArgumentsToMatch}, as follows:
@@ -4169,7 +4169,7 @@
* position in the parameter list at which folding takes place. The argument controlling this, {@code pos}, is a
* zero-based index. The aforementioned method {@link #foldArguments(MethodHandle, MethodHandle)} assumes position
* 0.
- * <p>
+ *
* @apiNote Example:
* <blockquote><pre>{@code
import static java.lang.invoke.MethodHandles.*;
@@ -4698,7 +4698,7 @@
* Note that the parameter type lists {@code (V...)} and {@code (A...)} have been expanded
* to their full length, even though individual clause functions may neglect to take them all.
* As noted above, missing parameters are filled in as if by {@link #dropArgumentsToMatch}.
- * <p>
+ *
* @apiNote Example:
* <blockquote><pre>{@code
* // iterative implementation of the factorial function as a loop handle
@@ -4991,7 +4991,7 @@
* return v;
* }
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example:
* <blockquote><pre>{@code
* // implement the zip function for lists as a loop handle
@@ -5010,7 +5010,7 @@
* assertEquals(zipped, (List<String>) loop.invoke(a.iterator(), b.iterator()));
* }</pre></blockquote>
*
- * <p>
+ *
* @apiNote The implementation of this method can be expressed as follows:
* <blockquote><pre>{@code
* MethodHandle whileLoop(MethodHandle init, MethodHandle pred, MethodHandle body) {
@@ -5104,7 +5104,7 @@
* return v;
* }
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example:
* <blockquote><pre>{@code
* // int i = 0; while (i < limit) { ++i; } return i; => limit
@@ -5116,7 +5116,7 @@
* assertEquals(23, loop.invoke(23));
* }</pre></blockquote>
*
- * <p>
+ *
* @apiNote The implementation of this method can be expressed as follows:
* <blockquote><pre>{@code
* MethodHandle doWhileLoop(MethodHandle init, MethodHandle body, MethodHandle pred) {
@@ -5248,7 +5248,7 @@
* return v;
* }
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example with a fully conformant body method:
* <blockquote><pre>{@code
* // String s = "Lambdaman!"; for (int i = 0; i < 13; ++i) { s = "na " + s; } return s;
@@ -5260,7 +5260,7 @@
* MethodHandle loop = MethodHandles.countedLoop(fit13, start, MH_step);
* assertEquals("na na na na na na na na na na na na na Lambdaman!", loop.invoke("Lambdaman!"));
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example with the simplest possible body method type,
* and passing the number of iterations to the loop invocation:
* <blockquote><pre>{@code
@@ -5273,7 +5273,7 @@
* MethodHandle loop = MethodHandles.countedLoop(count, start, MH_step); // (v, i) -> "na " + v
* assertEquals("na na na na na na na na na na na na na Lambdaman!", loop.invoke(13, "Lambdaman!"));
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example that treats the number of iterations, string to append to, and string to append
* as loop parameters:
* <blockquote><pre>{@code
@@ -5286,7 +5286,7 @@
* MethodHandle loop = MethodHandles.countedLoop(count, start, MH_step); // (v, i, _, pre, _) -> pre + " " + v
* assertEquals("na na na na na na na na na na na na na Lambdaman!", loop.invoke(13, "na", "Lambdaman!"));
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example that illustrates the usage of {@link #dropArgumentsToMatch(MethodHandle, int, List, int)}
* to enforce a loop type:
* <blockquote><pre>{@code
@@ -5301,7 +5301,7 @@
* MethodHandle loop = MethodHandles.countedLoop(count, start, body); // (v, i, pre, _, _) -> pre + " " + v
* assertEquals("na na na na na na na na na na na na na Lambdaman!", loop.invoke("na", 13, "Lambdaman!"));
* }</pre></blockquote>
- * <p>
+ *
* @apiNote The implementation of this method can be expressed as follows:
* <blockquote><pre>{@code
* MethodHandle countedLoop(MethodHandle iterations, MethodHandle init, MethodHandle body) {
@@ -5406,7 +5406,6 @@
* }
* }</pre></blockquote>
*
- * <p>
* @apiNote The implementation of this method can be expressed as follows:
* <blockquote><pre>{@code
* MethodHandle countedLoop(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body) {
@@ -5607,7 +5606,7 @@
* return v;
* }
* }</pre></blockquote>
- * <p>
+ *
* @apiNote Example:
* <blockquote><pre>{@code
* // get an iterator from a list
@@ -5622,7 +5621,7 @@
* List<String> reversedList = Arrays.asList("e", "d", "c", "b", "a");
* assertEquals(reversedList, (List<String>) loop.invoke(list));
* }</pre></blockquote>
- * <p>
+ *
* @apiNote The implementation of this method can be expressed approximately as follows:
* <blockquote><pre>{@code
* MethodHandle iteratedLoop(MethodHandle iterator, MethodHandle init, MethodHandle body) {
--- a/jdk/src/java.base/share/classes/java/lang/invoke/package-info.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/package-info.java Thu Aug 10 15:23:03 2017 -0700
@@ -165,28 +165,33 @@
* <p>
* Given these rules, here are examples of legal bootstrap method declarations,
* given various numbers {@code N} of extra arguments.
- * The first rows (marked {@code *}) will work for any number of extra arguments.
- * <table class="plain">
+ * The first row (marked {@code *}) will work for any number of extra arguments.
+ * <table class="plain" style="vertical-align:top">
* <caption style="display:none">Static argument types</caption>
- * <tr><th>N</th><th>Sample bootstrap method</th></tr>
- * <tr><td>*</td>
- * <td><code>CallSite bootstrap(Lookup caller, String name, MethodType type, Object... args)</code></td></tr>
- * <tr><td>*</td><td>
- * <code>CallSite bootstrap(Object... args)</code></td></tr>
- * <tr><td>*</td><td>
- * <code>CallSite bootstrap(Object caller, Object... nameAndTypeWithArgs)</code></td></tr>
- * <tr><td>0</td><td>
- * <code>CallSite bootstrap(Lookup caller, String name, MethodType type)</code></td></tr>
- * <tr><td>0</td><td>
- * <code>CallSite bootstrap(Lookup caller, Object... nameAndType)</code></td></tr>
- * <tr><td>1</td><td>
+ * <thead>
+ * <tr><th scope="col">N</th><th scope="col">Sample bootstrap method</th></tr>
+ * </thead>
+ * <tbody>
+ * <tr><th scope="row" style="font-weight:normal; vertical-align:top">*</th><td>
+ * <ul style="list-style:none; padding-left: 0; margin:0">
+ * <li><code>CallSite bootstrap(Lookup caller, String name, MethodType type, Object... args)</code>
+ * <li><code>CallSite bootstrap(Object... args)</code>
+ * <li><code>CallSite bootstrap(Object caller, Object... nameAndTypeWithArgs)</code>
+ * </ul></td></tr>
+ * <tr><th scope="row" style="font-weight:normal; vertical-align:top">0</th><td>
+ * <ul style="list-style:none; padding-left: 0; margin:0">
+ * <li><code>CallSite bootstrap(Lookup caller, String name, MethodType type)</code>
+ * <li><code>CallSite bootstrap(Lookup caller, Object... nameAndType)</code>
+ * </ul></td></tr>
+ * <tr><th scope="row" style="font-weight:normal; vertical-align:top">1</th><td>
* <code>CallSite bootstrap(Lookup caller, String name, MethodType type, Object arg)</code></td></tr>
- * <tr><td>2</td><td>
- * <code>CallSite bootstrap(Lookup caller, String name, MethodType type, Object... args)</code></td></tr>
- * <tr><td>2</td><td>
- * <code>CallSite bootstrap(Lookup caller, String name, MethodType type, String... args)</code></td></tr>
- * <tr><td>2</td>
- * <td><code>CallSite bootstrap(Lookup caller, String name, MethodType type, String x, int y)</code></td></tr>
+ * <tr><th scope="row" style="font-weight:normal; vertical-align:top">2</th><td>
+ * <ul style="list-style:none; padding-left: 0; margin:0">
+ * <li><code>CallSite bootstrap(Lookup caller, String name, MethodType type, Object... args)</code>
+ * <li><code>CallSite bootstrap(Lookup caller, String name, MethodType type, String... args)</code>
+ * <li><code>CallSite bootstrap(Lookup caller, String name, MethodType type, String x, int y)</code>
+ * </ul></td></tr>
+ * </tbody>
* </table>
* The last example assumes that the extra arguments are of type
* {@code CONSTANT_String} and {@code CONSTANT_Integer}, respectively.
--- a/jdk/src/java.base/share/classes/java/lang/reflect/AnnotatedElement.java Thu Aug 10 15:21:17 2017 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/AnnotatedElement.java Thu Aug 10 15:23:03 2017 -0700
@@ -108,27 +108,39 @@
* <table class="plain">
* <caption>Overview of kind of presence detected by different AnnotatedElement methods</caption>
* <thead>
- * <tr><th colspan=2></th><th colspan=4>Kind of Presence</th>
- * <tr><th colspan=2>Method</th><th>Directly Present</th><th>Indirectly Present</th><th>Present</th><th>Associated</th>
+ * <tr><th colspan=2 scope="col">Method</th>
+ * <th colspan=4 scope="col">Kind of Presence</th>
+ * <tr><th scope="col">Return Type</th>
+ * <th scope="col">Signature</th>
+ * <th scope="col">Directly Present</th>
+ * <th scope="col">Indirectly Present</th>
+ * <th scope="col">Present</th>
+ * <th scope="col">Associated</th>
* </thead>
* <tbody>
- * <tr><td style="text-align:right">{@code T}</td><td>{@link #getAnnotation(Class) getAnnotation(Class<T>)}
- * <td></td><td></td><td>X</td><td></td>
+ * <tr><td style="text-align:right">{@code T}</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">{@link #getAnnotation(Class) getAnnotation(Class<T>)}
+ * <td></td><td></td><td style="text-align:center">X</td><td></td>
* </tr>
- * <tr><td style="text-align:right">{@code Annotation[]}</td><td>{@link #getAnnotations getAnnotations()}
- * <td></td><td></td><td>X</td><td></td>
+ * <tr><td style="text-align:right">{@code Annotation[]}</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">{@link #getAnnotations getAnnotations()}
+ * <td></td><td></td><td style="text-align:center">X</td><td></td>
* </tr>
- * <tr><td style="text-align:right">{@code T[]}</td><td>{@link #getAnnotationsByType(Class) getAnnotationsByType(Class<T>)}
- * <td></td><td></td><td></td><td>X</td>
+ * <tr><td style="text-align:right">{@code T[]}</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">{@link #getAnnotationsByType(Class) getAnnotationsByType(Class<T>)}
+ * <td></td><td></td><td></td><td style="text-align:center">X</td>
* </tr>
- * <tr><td style="text-align:right">{@code T}</td><td>{@link #getDeclaredAnnotation(Class) getDeclaredAnnotation(Class<T>)}
- * <td>X</td><td></td><td></td><td></td>
+ * <tr><td style="text-align:right">{@code T}</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">{@link #getDeclaredAnnotation(Class) getDeclaredAnnotation(Class<T>)}
+ * <td style="text-align:center">X</td><td></td><td></td><td></td>
* </tr>
- * <tr><td style="text-align:right">{@code Annotation[]}</td><td>{@link #getDeclaredAnnotations getDeclaredAnnotations()}
- * <td>X</td><td></td><td></td><td></td>
+ * <tr><td style="text-align:right">{@code Annotation[]}</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">{@link #getDeclaredAnnotations getDeclaredAnnotations()}
+ * <td style="text-align:center">X</td><td></td><td></td><td></td>
* </tr>
- * <tr><td style="text-align:right">{@code T[]}</td><td>{@link #getDeclaredAnnotationsByType(Class) getDeclaredAnnotationsByType(Class<T>)}
- * <td>X</td><td>X</td><td></td><td></td>
+ * <tr><td style="text-align:right">{@code T[]}</td>
+ * <th scope="row" style="font-weight:normal; text-align:left">{@link #getDeclaredAnnotationsByType(Class) getDeclaredAnnotationsByType(Class<T>)}
+ * <td style="text-align:center">X</td><td style="text-align:center">X</td><td></td><td></td>
* </tr>
* </tbody>
* </table>