Revise.jl not updating correctly a package

I am getting incomplete package updates from Revise.jl 3.5.0 in Julia 1.8.2 Linux x64 (Docker on MacOS 13.1) which I managed to track to the following minimal example:

Example Package

src/Example.jl:

module Example
     module A
         include("a.jl")
     end
     module B
        include("a.jl")
     end
     export A, B
end

src/a.jl:

f(x) = y

Manifest.toml:

name = "Example"
uuid = "1fcb2a49-e178-4b19-98f0-97e19ed5c4de"
authors = ["Some Authors"]
version = "0.1.0"

[deps]
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"

and empty test folder

Example Session (launched via julia --project on the package’s dir):

julia> using Revise
julia> using Example
[ Info: Precompiling Example [1fcb2a49-e178-4b19-98f0-97e19ed5c4de]
julia> A.f(1)
ERROR: UndefVarError: y not defined
Stacktrace:
 [1] f(x::Int64)
   @ Example.A src/a.jl:1
 [2] top-level scope

...
[Correct src/a.jl to be f(x) = x]
...

julia> A.f(1)
1

julia> B.f(1)
ERROR: UndefVarError: y not defined
Stacktrace:
 [1] f(x::Int64)
   @ Example.B src/a.jl:1
 [2] top-level scope

In the example above B.f remains broken, even though a restart of the session would fix it!

Am I hitting a limitation of Revise.jl or is this a bug?

I don’t know how Revise handles such a case, but the general recommendation is not to include the same file multiple times. See, for example

Is there a compelling reason to include “a.jl” twice in your case?

To be honest, there isn’t and I will change the original code so that it doesn’t.

However the issue remains in that I didn’t get any warning, and Revise.jl updated the package only partially.

As such I think this is a bug, affecting how much Revise.jl can be trusted (especially in an codebase that I am not the sole author) unless already documented as a limitation.

Opened an issue in GitHub:

This issue, or one like it, happens to me very often in the early stages of writing a package. Essentially an error that is fixed is not picked up by Revise. Makes using it extremely annoying.