Update dependency clj-kondo:clj-kondo to v2026.07.24 (main) - #433
Merged
Conversation
|
The rpm/deb packages and the JAR file for openvoxdb are available in a zip archive: |
renovate
Bot
force-pushed
the
renovate/main-clj-kondo-clj-kondo-2026.x
branch
from
July 27, 2026 13:17
ec69fa2 to
38e692b
Compare
corporate-gadfly
approved these changes
Jul 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2026.05.25→2026.07.24Release Notes
clj-kondo/clj-kondo (clj-kondo:clj-kondo)
v2026.07.24Compare Source
Highlights
Type checking
The type checker now infers much more and respects required
:keys!in Clojure 1.13 alphas.It derives argument types from how a param is used in the body:
It types the keys and values of destructured maps:
It flows map types from return values into destructured bindings:
It flags keys that are provably nil:
It narrows a local's type when guarded by a known predicate:
Clojure 1.13: built-in analysis is bumped to 1.13.0-alpha4 and the new map destructuring features are supported: required keys via
:keys!,:syms!and:strs!,:selectand:defaults. Required keys are checked at call sites:Constant condition
The linter
:constant-condition, which is:warningby default, warns on a condition whose truthiness is the same on every run:It replaces
:condition-always-true, which was off by default.Combined with the improved type inference, this can now find many more issues. In regression tests I've found multiple cases of
filterandremoveresults being used as conditions, which are always true since they always return a seq.Performance
Performance: linting is faster and allocates less. Var usages and bindings are now records, several rewrite-clj internals were optimized (@alexander-yakushev) and hot analyzer functions were split so they can be JIT-compiled.
All updates
commentforms no longer count for:shadowed-var,:unused-private-varand:inline-def. E.g.(defn f [bar] bar)after(comment (def bar 1))no longer warns. Defs incommentforms also no longer overwrite the arity and position of defs outside of them.resolveof a symbol qualified with the source namespace finds the extracted var, and the:clj-kondo/macroexpand-hookmarker now works ondeclare.:constant-condition: warn on a condition whose truthiness is the same on every run. On by default. Replaces:condition-always-true, whose config and ignores still apply to always-true conditions, and takes over thecondcatch-all warning from:unreachable-code, which now only covers reader conditional branch order. See docs.:discouraged-var: new per-var:positionsoption (a set or vector of:calland/or:value) to limit the warning to call position or value position. A var passed to a higher-order function such asmapcounts as:value.clojure.test.check.clojure-test/defspec:seq-rest: suggest using(next x)over(seq (rest x)). Defaults to:off(@tomdl89)#_before an unmatched reader conditional discards the next form. E.g.[#_#?(:cljs 1) 2]reads as[]in:cljand will warn.:redundant-fn-wrapperfor keyword functions in specs (@jramosg)andandorreturn types. E.g.(when (or x :default) ...)will warn.re-matchesandre-findare nilable.classis nilable,(class nil)returns nil.ifwithout an else branch includes nil in its return type.1.11.(defn f [{:keys [x]}] (inc x)) (f {:x "foo"})will warn. A key whose use rejects nil and that has no:ordefault is required. E.g.(f {})will warn with missing required key.(defn cfg [] {:port "8080"}) (let [{:keys [port]} (cfg)] (inc port))will warn.(inc (:y {}))will warn. A key with an:ordefault, generated maps in macro expansions, maps with dynamic keys, and maps that went throughintoor anassocwith a dynamic key are exempt.clojure.corefrom 23 to 150 vars. E.g.(interleave 1 [2])and(mod "a" 2)will warn.contains?acceptsnilas its collection argument(defn f [s] (subs s 1)) (f 42)will warn, since the evidence(subs s 1)tells us thatsshould be a string.parse-long,parse-double,parse-uuidandparse-booleanifor the body ofwhenwhen it is guarded by a known predicate. E.g.(if (string? x) (inc x) ...)will warn.:keys!:syms!:strs!with required keys&, or a second&, in a map destructuring keys vector as a syntax error&is now invalid as a binding name in all binding positions:ordefault on:keys!required binding, matches 1.13 compile error:keys!,:syms!and:strs!and report them at call sites:selectin map destructuring. The bound map's keys are known to the type checker:defaultsin map destructuring, error when used without:or:conflicting-aliasnow catches conflicts with the current namespace name, not just other aliases (@tomdl89):invalid-aritywhen an inner binding or fn param shadows a local function name (@yuhan0)--copy-configsno longer rewrites and reports unchanged config files on every run (@nikbad)0.15.56Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.