On Fri, 4 Dec 2020 13:12:27 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> This pull request replaces https://github.com/openjdk/jdk/pull/1227.
>> 
>> From the original PR:
>> 
>>> Please review the code for the second iteration of sealed classes. In this 
>>> iteration we are:
>>> 
>>>     * Enhancing narrowing reference conversion to allow for stricter 
>>> checking of cast conversions with respect to sealed type hierarchies
>>> 
>>>     * Also local classes are not considered when determining implicitly 
>>> declared permitted direct subclasses of a sealed class or sealed interface
>>> 
>>>     * renaming Class::permittedSubclasses to Class::getPermittedSubclasses, 
>>> still in the same method, the return type has been changed to Class<?>[] 
>>> instead of the previous ClassDesc[]
>>> 
>>>     * adding code to make sure that annotations can't be sealed
>>> 
>>>     * improving some tests
>>> 
>>> 
>>> TIA
>>> 
>>> Related specs:
>>> [Sealed Classes 
>>> JSL](http://cr.openjdk.java.net/~gbierman/jep397/jep397-20201104/specs/sealed-classes-jls.html)
>>> [Sealed Classes 
>>> JVMS](http://cr.openjdk.java.net/~gbierman/jep397/jep397-20201104/specs/sealed-classes-jvms.html)
>>> [Additional: Contextual 
>>> Keywords](http://cr.openjdk.java.net/~gbierman/jep397/jep397-20201104/specs/contextual-keywords-jls.html)
>> 
>> This PR strives to reflect the review comments from 1227:
>>  * adjustments to javadoc of j.l.Class methods
>>  * package access checks in Class.getPermittedSubclasses()
>>  * fixed to the narrowing conversion/castability as pointed out by Maurizio
>
> Jan Lahoda has refreshed the contents of this pull request, and previous 
> commits have been removed. The incremental views will show differences 
> compared to the previous content of the PR.

Marked as reviewed by alanb (Reviewer).

src/java.base/share/classes/java/lang/Class.java line 3043:

> 3041:             for (Class<?> c : subClasses) {
> 3042:                 if (Proxy.isProxyClass(c))
> 3043:                         throw new InternalError("a permitted subclass 
> should not be a proxy class: " + c);

Minor nit but I think the indentation may be messed up here.

src/java.base/share/classes/java/lang/Class.java line 4394:

> 4392:      * implement this class or interface if it is sealed. The order of 
> such elements
> 4393:      * is unspecified. If this {@code Class} object represents a 
> primitive type,
> 4394:      * {@code void}, an array type, or a class or interface that is not 
> sealed,

Did you mean {@code Void} here?

src/java.base/share/classes/java/lang/Class.java line 4403:

> 4401:      * loader} of the current {@code Class} object).
> 4402:      * The {@code Class} objects which can be obtained using this 
> procedure,
> 4403:      * and which are direct subinterfaces or subclasses of this class 
> or interface,

Minor suggestion is to drop "using this procedure" from this sentence.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1483

Reply via email to