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

inference: failure of 15.12.2.8 should trigger backtracking in overload resolution

XMLWordPrintable

    • unknown
    • generic

      The following legal Java program doesn't compile:

      class Test {
      <Z extends Number> Z m(String o) { return null; }
      <Z extends String> Z m(Object o) { return null; }

      { String s = m(null); } //error in javac
      }

      Reading JLS 3rd, section 15.12.2.2, method m(String) is not applicable - (because there's no instance of the type-variable Z satisfying the constraints imposed by the expected return type, as described in JLS 15.12.2.8). Hence, the applicability check fails and, method resolution discovers another suitable candidate, namely m(Object). javac seems to never get there.

            mcimadamore Maurizio Cimadamore
            mcimadamore Maurizio Cimadamore
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: