Support Julia 1.14-DEV#782
Open
koalazub wants to merge 13 commits into
Open
Conversation
aviatesk
reviewed
Jun 27, 2026
| Project.toml.bak | ||
| Manifest.toml | ||
| Manifest-*.toml | ||
| LocalPreferences.toml |
Owner
There was a problem hiding this comment.
This is such a simple change that can be merged separately.
Contributor
Author
There was a problem hiding this comment.
koalazub
force-pushed
the
support-julia-1.14-dev
branch
3 times, most recently
from
June 27, 2026 10:02
d764788 to
eac3651
Compare
koalazub
added a commit
to koalazub/JETLS.jl
that referenced
this pull request
Jun 28, 2026
Snapshot of local working changes on top of `support-julia-1.14-dev`. All 1.14 Compiler adaptations are gated (`@static if hasfield(CC.InferenceState, :world)` / `isdefined(CC, :InferenceCache)`) so the 1.12/1.13 paths lower unchanged, following the convention of aviatesk#782. Gated Compiler API drift (inference + diagnostics paths): - `ASTTypeAnnotator` local cache aliases to `Compiler.InferenceCache` on 1.14, `Vector{InferenceResult}` otherwise (fixes `OverlayCodeCache` construction in the default `code_cache`). - `CC.finishinfer!` gains the 4th `opt_cache` argument on 1.14; without the dispatched override `annotate_types!` never ran and type inlay hints silently produced no `:type` attributes. - `CC.abstract_call_gf_by_type` / `CC.abstract_call_opaque_closure` (and the OC call site) gain the new `vtypes` argument on 1.14. They were silently bypassed otherwise, so the iterator argtype observation never ran and the inner variable of a cartesian comprehension (`[x+y for x in xs for y in ys]`) inferred as `Any`. - `slot_type_at` reads `frame.bb_states[bb].vartable` on 1.14, `frame.bb_vartables[bb]` otherwise. - `ConstCallInfo` usages guarded with `@static isdefined(CC, ...)`. - `JET.set_cache_target!`/`cache_target` widened to `Pair{Symbol,<:InferenceState}` lives in the dev'd JET.jl checkout. Other: - `document-symbol.jl`: read the module name from `st0[end-1]`, robust to the leading `Value` provenance children 1.14 adds to `K"module"`. - `test/HierarchicalTestSet.jl`: guard removed `Test.FAIL_FAST`. - `completions.jl`, `test/test_julia114.jl`, `Project.toml`, `.gitignore`: local working changes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
koalazub
marked this pull request as ready for review
July 1, 2026 15:06
koalazub
force-pushed
the
support-julia-1.14-dev
branch
from
July 1, 2026 23:41
71251af to
5bfa4da
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #782 +/- ##
==========================================
- Coverage 78.30% 78.20% -0.10%
==========================================
Files 62 62
Lines 12928 12992 +64
==========================================
+ Hits 10123 10161 +38
- Misses 2805 2831 +26
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
Author
|
The nightly failure is upstream of this diff — the registered Compiler package is stale against the current nightly ( |
koalazub
force-pushed
the
support-julia-1.14-dev
branch
3 times, most recently
from
July 9, 2026 06:27
e3e47db to
d4dde45
Compare
A keyword absent from Base.Docs.keywords threw a KeyError while building the completion table; look it up defensively and fall back to no documentation.
JET v0.11 refreshes the local cache inside the constructor instead of accepting it as a keyword, so passing it raised a MethodError on every analysis.
The dev Compiler removed the world field. On the nightly, derive the world via get_inference_world, hand binding_world_hints to the partition scan, and call the three-argument update_valid_age!; older Julia keeps sv.world.
The LSInterpreter ToplevelAbstractAnalyzer method dropped the refresh_local_cache kwarg, but the concurrent signature-analysis call site still passed it, so every task threw MethodError on all Julia versions. The cache is still refreshed via JET's positional default in the 2-arg ToplevelAbstractAnalyzer(::ConcreteInterpreter, ::BitVector). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@markdown/@raw/@typst cell bodies are prose, not Julia; parsing them produced bogus syntax diagnostics. Blank them out byte-for-byte (offsets and line numbers preserved) before JuliaSyntax sees the text. Files without cell markers pass through untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Js76HSq1MpJgHhekLahoFH
…piler
Upstream's report_method_error! unwraps CC.ConstCallInfo and
ASTTypeAnnotator carries a Vector{InferenceResult} local cache; the
pinned Compiler (2e0a778b) removed ConstCallInfo and replaced the
inference-cache convention with CC.InferenceCache. Gate both behind
isdefined checks so either Compiler builds.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Js76HSq1MpJgHhekLahoFH
…g states finishinfer! grew an opt_cache parameter in the pinned Compiler, so the annotator's 3-arg overload never dispatched and no :type attributes were ever attached — hover, field completions, and inlay hints all silently degraded (upstream's own precompile workload warned). Gate the overload on both arities, gate bb_vartables->bb_states and ConstCallInfo, and teach the annotator's partition load plus resolve_global_const to unwrap the AbstractBindingState JET now materializes for non-const globals, so notebook toplevel bindings hover with concrete types. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Js76HSq1MpJgHhekLahoFH
mask_noncode_cells now blanks the @cell/@markdown/@raw/@typst marker lines and legacy `using NothelixMacros` (byte-length preserving) so the LSP never reports them as undefined macros — no NothelixMacros package needed. FileInfo carries the unmasked raw_text; document_text returns it so whole-document formatting and the test runner see real content while the parse stream stays masked. Fixes :fmt erasing notebook buffers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Js76HSq1MpJgHhekLahoFH
JET's analyze_method_signature! → analyze_method_instance! returns the InferenceResult directly, not (analyzer, result). The three sites that destructured it as a 2-tuple threw MethodError: no method matching iterate(::InferenceResult), silently killing signature analysis (no method/undef diagnostics fired). Drop the stale `analyzer,` binding — the analyzer is mutated in place. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Js76HSq1MpJgHhekLahoFH
koalazub
force-pushed
the
support-julia-1.14-dev
branch
2 times, most recently
from
July 12, 2026 02:36
25a506d to
a6be8d3
Compare
…t-symbol, testset)
Port handle_request_message_or_respond_error from the deployed 1.14 tree: a throwing request handler now yields an InternalError response instead of leaving the client hanging. Also guard rename's deferred workDoneProgress continuation, which runs outside that guard's scope: a throw (or a client error response to the progress-create request) now sends an error response for the original rename request id. Tested via do_rename overrides on both the direct and deferred paths.
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.
JETLS loads, serves, and analyses on a current Julia 1.14 nightly, given the companion JET support in aviatesk/JET.jl#836. Nothing changes on 1.12 or 1.13; the 1.14 paths are selected at parse time (mostly
@static if hasfield(CC.InferenceState, :world)/isdefined(CC, ...)gates), so older Julia lowers exactly as before.The dev Compiler's API is a moving target underneath:
InferenceStatedropped itsworldfield (derived viaget_inference_worldnow),ConstCallInfowas removed in favor ofCC.InferenceCache,finishinfer!gained anopt_cacheargument that silently broke the type annotator's dispatch, andanalyze_method_signature!now returns a bareInferenceResultinstead of a(analyzer, result)tuple. JET v0.11 stopped taking a cache-refresh keyword, so JETLS no longer passes one. The keyword-completion table no longer assumes every keyword carries documentation. Separately, notebook@markdown/@raw/@typstcells are now masked byte-for-byte before parsing (raw text preserved for formatting) so their prose stops producing bogus syntax/macro diagnostics.Rebased onto current master; no functional changes since the last push.