From 01f79f1e0324082f7f55017182b4ddd584ed8f97 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Wed, 3 Jun 2026 05:00:13 -0500 Subject: [PATCH 1/2] Track _defaultctors move from Core to Base Nightly lowers a struct definition's default-constructor call as `Base._defaultctors` rather than `Core._defaultctors`. Co-Authored-By: Claude Opus 4.8 (1M context) --- test/codeedges.jl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/codeedges.jl b/test/codeedges.jl index 902756d..3a097c2 100644 --- a/test/codeedges.jl +++ b/test/codeedges.jl @@ -40,6 +40,12 @@ function minimal_evaluation(predicate, src::Core.CodeInfo, edges::CodeEdges; kwa return isrequired end +# Recognize the default-constructor call emitted when lowering a struct definition. +# `_defaultctors` lived in `Core` through 1.12 but moved to `Base` (JuliaLang/julia, see +# base/essentials.jl), so accept either home. +is_defaultctors_call(@nospecialize stmt) = Meta.isexpr(stmt, :call) && + (is_global_ref(stmt.args[1], Base, :_defaultctors) || is_global_ref(stmt.args[1], Core, :_defaultctors)) + function allmissing(mod::Module, names) for name in names isdefined(mod, name) && return false @@ -245,7 +251,7 @@ module ModSelective end isrequired = minimal_evaluation(src, edges) do @nospecialize stmt # initially mark only the constructor @static if VERSION ≥ v"1.12-" - return (Meta.isexpr(stmt, :call) && stmt.args[1] == GlobalRef(Core, :_defaultctors), false) + return (is_defaultctors_call(stmt), false) else return (LoweredCodeUtils.ismethod_with_name(src, stmt, "NoParam"), false) end @@ -267,7 +273,7 @@ module ModSelective end isrequired = minimal_evaluation(src, edges) do @nospecialize stmt # initially mark only the constructor @static if VERSION ≥ v"1.12-" - return (Meta.isexpr(stmt, :call) && stmt.args[1] == GlobalRef(Core, :_defaultctors), false) + return (is_defaultctors_call(stmt), false) else return (LoweredCodeUtils.ismethod_with_name(src, stmt, "Struct"), false) end From 1b480855396249a405645f672d7534a32900052f Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Wed, 3 Jun 2026 06:27:25 -0500 Subject: [PATCH 2/2] Test macOS on aarch64 instead of x64 macos-latest now resolves to an Apple Silicon (arm64) runner, and setup-julia v3 errors when asked for a mismatched x64 arch rather than coping silently as v2 did. Test the architecture the runner actually provides; macOS x64 runners are being retired anyway. --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index f2a2a45..37ceef4 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -35,9 +35,9 @@ jobs: - version: '1' # x64 windows os: windows-latest arch: x64 - - version: '1' # x64 macOS + - version: '1' # Apple Silicon macOS os: macos-latest - arch: x64 + arch: aarch64 steps: - uses: actions/checkout@v6 - uses: julia-actions/setup-julia@v3