From 2c87d90bda088d6d14921a13dfdf023e0a80aa7c Mon Sep 17 00:00:00 2001 From: Joel Kaasinen Date: Fri, 9 Jan 2026 08:37:49 +0200 Subject: [PATCH] fix: create-exception-middleware for hierarchical keywords Previously, the code was searching among the descendants, not the ancestors, of the error type for an error handler. The test also got this wrong, perhaps due to a mistake in the parameter order of derive. --- .../src/reitit/ring/middleware/exception.clj | 6 +++--- test/clj/reitit/ring/middleware/exception_test.clj | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj b/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj index f198c213..2d50a995 100644 --- a/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj +++ b/modules/reitit-middleware/src/reitit/ring/middleware/exception.clj @@ -19,8 +19,8 @@ (recur (.getSuperclass sk) (conj ks sk)) ks))) -(defn- descendants-safe [type] - (when-not (class? type) (descendants type))) +(defn- ancestors-safe [type] + (when-not (class? type) (ancestors type))) (defn- call-error-handler [handlers error request] (let [type (:type (ex-data error)) @@ -29,7 +29,7 @@ (get handlers ex-class) (some (partial get handlers) - (descendants-safe type)) + (ancestors-safe type)) (some (partial get handlers) (super-classes ex-class)) diff --git a/test/clj/reitit/ring/middleware/exception_test.clj b/test/clj/reitit/ring/middleware/exception_test.clj index fc4947e0..6e8e4215 100644 --- a/test/clj/reitit/ring/middleware/exception_test.clj +++ b/test/clj/reitit/ring/middleware/exception_test.clj @@ -11,7 +11,7 @@ (:import (clojure.lang ExceptionInfo) (java.sql SQLException SQLWarning))) -(derive ::kikka ::kukka) +(derive ::kukka ::kikka) (deftest exception-test (letfn [(create