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

ElementScannerN, N > 9 should scan type parameters

    XMLWordPrintable

    Details

    • Type: CSR
    • Status: Closed
    • Priority: P4
    • Resolution: Approved
    • Fix Version/s: 14
    • Component/s: core-libs
    • Labels:
      None
    • Subcomponent:
    • Compatibility Kind:
      behavioral
    • Compatibility Risk:
      minimal
    • Compatibility Risk Description:
      Changing behavior of newly added class.
    • Interface Kind:
      Java API
    • Scope:
      SE

      Description

      Summary

      Define ElementScanner14 to visit type parameters; surprisingly, type parameters and not visited by the previously available scanners.

      Problem

      Surprising behavior in javax.lang.model utility classes. At least one scanner class with the new functionality was written as part of the javac implementation.

      Solution

      Add overrides for the methods visiting executables and types to visit type parameters, if present.

      Specification

      --- old/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner14.java 2019-12-04 19:16:42.857000999 -0800
      +++ new/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner14.java 2019-12-04 19:16:42.601000999 -0800
      @@ -121,6 +123,48 @@
           }
      
           /**
      +     * {@inheritDoc}
      +     *
      +     * @implSpec This implementation scans the type parameters, if
      +     * any, and then the enclosed elements.
      +     * 
      +     *
      +     * @param e  {@inheritDoc}
      +     * @param p  {@inheritDoc}
      +     * @return the result of scanning
      +     */
      +    @Override
      +    public R visitType(TypeElement e, P p) {
      +        return scan(createScanningList(e, e.getEnclosedElements()), p);
      +    }
      +
      +    /**
      +     * {@inheritDoc}
      +     *
      +     * @implSpec This implementation first scans the type parameters, if any, and then
      +     * the parameters.
      +     *
      +     * @param e  {@inheritDoc}
      +     * @param p  {@inheritDoc}
      +     * @return the result of scanning
      +     */
      +    public R visitExecutable(ExecutableElement e, P p) {
      +        return scan(createScanningList(e, e.getParameters()), p);
      +    }
      +

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              darcy Joe Darcy
              Reporter:
              darcy Joe Darcy
              Reviewed By:
              Maurizio Cimadamore
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: