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

5.5: Clean up description of legal conversions in casts

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 9
    • 8
    • specification

      The start of 5.5 lists various conversions that are allowed in a casting context.

      "Casting contexts allow the use of one of:
      • an identity conversion (§5.1.1)
      • a widening primitive conversion (§5.1.2)
      • a narrowing primitive conversion (§5.1.3)
      • a widening and narrowing primitive conversion (§5.1.4)
      • a widening reference conversion (§5.1.5) optionally followed by either an unboxing conversion (§5.1.8) or an unchecked conversion (§5.1.9)
      • a narrowing reference conversion (§5.1.6) optionally followed by either an unboxing conversion (§5.1.8) or an unchecked conversion (§5.1.9)
      • a boxing conversion (§5.1.7) optionally followed by a widening reference conversion (§5.1.5)
      • an unboxing conversion (§5.1.8) optionally followed by a widening primitive conversion (§5.1.2)."

       This list has various problems:
      - It doesn't include all allowed reference type casts (per 5.5.1), such as from Runnable to Cloneable
      - It doesn't allow widening before unboxing followed by primitive widening, even though javac does (see JDK-8166326)
      - The use of "widening and narrowing primitive conversion" adds unnecessary complexity, since we could just as easily describe this as "a widening primitive conversion followed by a narrowing primitive conversion". (Cleaning this up means deleting 5.1.4, though, a disruption that may not be worth it.)
      - It gives the impression that any listed conversion is allowed, even though some unchecked conversions are not (per 5.5.1)
      - It is redundant, since the next paragraph restates it more precisely.

      Propose rewriting to merge with the subsequent description and to accurately reflect the set of legal conversions.

            abuckley Alex Buckley
            dlsmith Dan Smith
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: