Only @experimental is exported. Everything else — record, entered, audit, mark, experimental, compare, isbreaking, stamp, assert_clean, … — is public and not exported.
julia> Base.isexported(ExperimentalAPI, :record), Base.ispublic(ExperimentalAPI, :record)
(false, true)
The documentation calls them unqualified in 29 places across adopting.md, analysing.md, checking.md, declaring.md, observing.md and releases.md:
r = record() do # UndefVarError: `record` not defined
…
end
A reader who writes using ExperimentalAPI — which is what every example above them shows — gets UndefVarError on the first line of each.
The package states the convention itself, in api.md:
experimental is public, not exported, so it is qualified — which is the visibility convention this package leans on rather than duplicates.
The README follows it (ExperimentalAPI.entered()); the documentation pages do not.
Fix
Qualify them, and add a check so it cannot recur: for every julia block under docs/src, no name that is public && !exported may appear unqualified.
Only
@experimentalis exported. Everything else —record,entered,audit,mark,experimental,compare,isbreaking,stamp,assert_clean, … — ispublicand not exported.The documentation calls them unqualified in 29 places across
adopting.md,analysing.md,checking.md,declaring.md,observing.mdandreleases.md:A reader who writes
using ExperimentalAPI— which is what every example above them shows — getsUndefVarErroron the first line of each.The package states the convention itself, in
api.md:The README follows it (
ExperimentalAPI.entered()); the documentation pages do not.Fix
Qualify them, and add a check so it cannot recur: for every julia block under
docs/src, no name that ispublic && !exportedmay appear unqualified.