RFR: 8246778: Compiler implementation for Sealed Classes (Second Preview)
Jan Lahoda
jlahoda at openjdk.java.net
Fri Nov 27 17:06:03 UTC 2020
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
-------------
Commit messages:
- Moving checkPackageAccess from getPermittedSubclasses to a separate method.
- Improving getPermittedSubclasses() javadoc.
- Enhancing the Class.getPermittedSubclasses() test to verify behavior both for sealed classes in named and unnamed modules.
- Removing unnecessary file.
- Tweaking javadoc.
- Reflecting review comments w.r.t. narrowing conversion.
- Improving checks in getPermittedSubclasses()
- Merging master into JDK-8246778
- Adding checkPackageAccess to Class.getPermittedSubclasses().
- 8246778: Compiler implementation for Sealed Classes (Second Preview)
Changes: https://git.openjdk.java.net/jdk/pull/1483/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1483&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8246778
Stats: 915 lines in 12 files changed: 834 ins; 9 del; 72 mod
Patch: https://git.openjdk.java.net/jdk/pull/1483.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1483/head:pull/1483
PR: https://git.openjdk.java.net/jdk/pull/1483
More information about the core-libs-dev
mailing list