diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 0f161d747d..a4907ea2ff 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -4915,10 +4915,9 @@ :static true} [^Class c] (when c - (let [i (.getInterfaces c) + (let [i (seq (.getInterfaces c)) s (.getSuperclass c)] - (not-empty - (if s (cons s i) i))))) + (if s (cons s i) i)))) (defn supers "Returns the immediate and indirect superclasses and interfaces of c, if any" diff --git a/test/clojure/test_clojure/java_interop.clj b/test/clojure/test_clojure/java_interop.clj index f80d0e45cf..e073f9d16e 100644 --- a/test/clojure/test_clojure/java_interop.clj +++ b/test/clojure/test_clojure/java_interop.clj @@ -153,6 +153,12 @@ (are [x y] (= x y) (bases java.lang.Math) (list java.lang.Object) + (bases java.util.Collection) + (list java.lang.Iterable) + (bases java.lang.Object) + nil + (bases java.lang.Comparable) + nil (bases java.lang.Integer) (list java.lang.Number java.lang.Comparable) ))