Skip to content

2026-03-19

Choose a tag to compare

@github-actions github-actions released this 18 Mar 18:35
· 233 commits to release since this release
ea73622
  • Commit: ea73622
  • Diff: 4280097...ea73622
  • Installation:
    julia -e 'using Pkg; Pkg.Apps.add(; url="https://github.com/aviatesk/JETLS.jl", rev="2026-03-19")'

Added

  • Added @main function support across LSP features (document-symbol, document-highlight, references, rename, completions, diagnostic).

  • Added lowering/unused-assignment diagnostic that detects assignments whose values are never read (dead stores).
    This complements the existing lowering/unused-local diagnostic: lowering/unused-local reports variables that are never used at all, while lowering/unused-assignment reports specific assignments to variables that are used elsewhere.
    For example:

    function f(x::Bool)
        if x
            z = "Hi"
            println(z)  # z is used, so no `unused-local`
        end
        if x
            z = "Hey"   # but this value is never read → `unused-assignment`
        end
    end

Changed

  • lowering/undef-local-var now reports a diagnostic for each use site on an undef path individually, rather than only reporting the first one.
  • lowering/undef-local-var @isdefined propagation now recognizes @isdefined(var) within && chains (e.g., if cond && @isdefined(y)), suppressing false positive diagnostics in the guarded branch.
  • Updated JuliaSyntax.jl and JuliaLowering.jl dependency versions to latest

Fixed

  • Fixed false positive lowering/unused-binding warning for keyword arguments that are only used in computing other keyword arguments' default values (Closed #592).
  • Fixed false positive lowering/unused-import warning for imports used inside quoted expressions in macro bodies or helper functions (Closed #594).
  • Fixed lowering/undef-local-var diagnostic being reported at the wrong location:
    when a variable had both defined and potentially-undefined uses, the diagnostic pointed to the first use in source order rather than the use that is actually on the undef path.
  • Fixed signature-help error when displaying signatures for operator-like methods (e.g. Base.:(==)).
  • Fixed "Delete assignment" code action removing the opening delimiter of string literals (e.g., z = "Hey" became Hey" instead of "Hey").