Skip to content

Commit f9bf449

Browse files
authored
loading: Clamp Julia syntax version from Manifest as well (JuliaLang#60275)
This is really a Pkg bug, where I forgot to implement the clamping when generating the manifest (and will submit a PR), but since we clamp and override when loading from a Project.toml, it seems reasonable to do the same for Manifest.toml. We never want to use a syntax version less than 1.13, so cut off that path as well, without assuming that Pkg.jl gets it right (too much manual editing of Manifest files happening with AI assistants). Fixes JuliaLang#60273 Written by Claude.
1 parent d0060e7 commit f9bf449

File tree

6 files changed

+18
-0
lines changed

6 files changed

+18
-0
lines changed

base/loading.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1222,6 +1222,10 @@ function explicit_manifest_entry_load_spec(manifest_file::String, pkg::PkgId, en
12221222
syntax_table = get(entry, "syntax", nothing)
12231223
if syntax_table !== nothing
12241224
syntax_version = VersionNumber(get(syntax_table, "julia_version", nothing))
1225+
# Clamp to minimum supported syntax version
1226+
if syntax_version <= NON_VERSIONED_SYNTAX
1227+
syntax_version = NON_VERSIONED_SYNTAX
1228+
end
12251229
end
12261230

12271231
# Resolve path

test/loading.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1910,6 +1910,8 @@ module M58272_to end
19101910
@test invokelatest(getglobal, (@eval (using VersionedDep1; VersionedDep1)), :ver) == v"1.13"
19111911
# syntax.julia_version from Manifest = "1.14"
19121912
@test invokelatest(getglobal, (@eval (using VersionedDep2; VersionedDep2)), :ver) == v"1.14"
1913+
# syntax.julia_version from Manifest = "1.0" should be clamped to "1.13"
1914+
@test invokelatest(getglobal, (@eval (using VersionedDep3; VersionedDep3)), :ver) == v"1.13"
19131915
finally
19141916
Base.ACTIVE_PROJECT[] = old_active_project
19151917
copy!(LOAD_PATH, old_load_path)

test/project/SyntaxVersioning/explicit/Manifest.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,8 @@ syntax.julia_version = "1.13.0"
1212
path = "VersionedDep2"
1313
uuid = "e127e659-a899-4a00-b565-5b74face18ba"
1414
syntax.julia_version = "1.14.0"
15+
16+
[[deps.VersionedDep3]]
17+
path = "VersionedDep3"
18+
uuid = "6ae26a88-8a9e-4c29-a00a-ea2b9a48e6e1"
19+
syntax.julia_version = "1.0.0"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
[deps]
22
VersionedDep1 = "f08855a0-36cb-4a32-8ae5-a227b709c612"
33
VersionedDep2 = "e127e659-a899-4a00-b565-5b74face18ba"
4+
VersionedDep3 = "6ae26a88-8a9e-4c29-a00a-ea2b9a48e6e1"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name = "VersionedDep3"
2+
uuid = "6ae26a88-8a9e-4c29-a00a-ea2b9a48e6e1"
3+
syntax.julia_version = "1.0"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module VersionedDep3
2+
const ver = (@Base.Experimental.VERSION).syntax
3+
end

0 commit comments

Comments
 (0)