diff --git a/Project.toml b/Project.toml index e16b1ab8..2677999f 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "Revise" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.7.3" +version = "3.7.4" [deps] CodeTracking = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" diff --git a/src/lowered.jl b/src/lowered.jl index 362584c8..81b74a33 100644 --- a/src/lowered.jl +++ b/src/lowered.jl @@ -452,8 +452,12 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra end end elseif LoweredCodeUtils.get_lhs_rhs(stmt) !== nothing - # If we're here, either isrequired[pc] is true, or the mode forces us to eval assignments - pc = step_expr!(recurse, frame, stmt, true) + if mode === :sigs && stmt.head === :const && (a = stmt.args[1]) isa GlobalRef && @invokelatest(isdefined(mod, a.name)) + # avoid redefining types unless we have to + pc = next_or_nothing!(frame) + else + pc = step_expr!(recurse, frame, stmt, true) + end elseif head === :call f = @lookup(frame, stmt.args[1]) if isdefined(Core, :_defaultctors) && f === Core._defaultctors && length(stmt.args) == 3