Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8242368

javac changes for pattern matching for instanceof (Second Preview)

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P3 P3
    • 15
    • tools
    • None
    • source
    • minimal
    • Expanding set of programs accepted to compile in a natural way.
    • Language construct
    • SE

      Summary

      Several minor bugs in the Java Language Specification for the "Pattern Matching for instanceof" feature have been identified, and fixed. The feature will remain a preview feature for JDK 15.

      Problem

      As a feedback to the "Pattern Matching for instanceof" preview feature, there were two minor bugs identified:

      1. The following code would not compile per the spec (as it contained no handling for parenthesized expressions):

        if ((o instanceof String s)) {
            System.err.println(s); //the binding variable does not propagate through the parenthesized expression per JLS
        }
      2. The following code would not compile per the spec (as it contained no handling for labeled statements):

        LABELED: if (o instanceof String s) ; else throw new IllegalStateException();
        System.err.println(s); //labeled statements didn't introduce any variables into the scope, even if the nested statement would.

      Solution

      Sections 6.3.1.7 Parenthesized Expressions, and 6.3.2.7 Labeled Statements have been added to the specification to fix the above problems.

      The feature "Pattern Matching for instanceof" will continue to be a preview feature in JDK 15.

      Specification

      The updated specification is updated as patterns-instanceof-jls-20200413.zip, with a simple diff against the previous specification attached as JDK-8242368-diff.zip. The specification is also available for convenience here: http://cr.openjdk.java.net/~gbierman/jep375/jep375-20200413/specs/patterns-instanceof-jls.html

      The only non-editorial changes to the specification compared to the JDK 14 version of the specification is the addition of sections 6.3.1.7 and 6.3.2.7.

            jlahoda Jan Lahoda
            jlahoda Jan Lahoda
            Alex Buckley, Gavin Bierman
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: