Uploaded image for project: 'Clojure'
  1. CLJ-2414

Regression in reflectively finding default methods

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Completed
    • Affects versions: Release 1.10
    • Fix versions: Release 1.10
    • Environment:

      Java 9+

    • Approval:
      Ok
    • Patch:
      Code and Test

      Description

      CLJ-2066 Closed introduced a new reflective walk for matching accessible methods but the logic in that walk assumes it will find a method in the superclass hierarchy. If it does not, then it will produce an infinite loop.

      This is an example of a concrete class (sun.nio.fs.UnixPath) which has a method startsWith which is declared as a default method on java.nio.file.Path:

      (def p (java.nio.file.Paths/get "src" (into-array String [])))
      (.startsWith p "s")
      

      Proposed: Instead, should walk all super classes, then walk all interfaces to find an accessible default method.

      Patch: clj-2414-2.patch

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              alexmiller Alex Miller
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: