methoddef!: use mt => sig format when filling in signatures#125
methoddef!: use mt => sig format when filling in signatures#125serenity4 merged 22 commits intoJuliaDebug:masterfrom
methoddef!: use mt => sig format when filling in signatures#125Conversation
Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com>
…LoweredCodeUtils.jl into support-external-methodtables
…to support-external-methodtables
CodeTracking is not a direct dependency of LoweredCodeUtils, but since it indirectly is via JuliaInterpreter I'll add it. |
We already used `extract_method_table` from JuliaInterpreter, obsoleting the introduction of `method_table`.
7a800ae to
9c2c545
Compare
9c2c545 to
73d89d5
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #125 +/- ##
===========================================
- Coverage 88.69% 76.90% -11.80%
===========================================
Files 6 6
Lines 1442 1524 +82
===========================================
- Hits 1279 1172 -107
- Misses 163 352 +189 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
782bf05 to
f8d0560
Compare
f8d0560 to
b8520fc
Compare
|
The failing test at https://github.com/JuliaDebug/LoweredCodeUtils.jl/actions/runs/14648771143/job/41109358572?pr=125#step:7:112 asserts that a function object depends on its first method definition. I slightly restructured the implementation for method code edge dependencies in 8548679, and naturally expected a function binding to depend on its declaration, but not on the method definition. @aviatesk or @timholy would that be more correct according to you, or is it a regression? In the code below, the defintion of CodeInfo(
@ /home/serenity4/.julia/dev/LoweredCodeUtils/test/codeedges.jl:339 within `unknown scope`
1 ─ %1 = enter #4
@ /home/serenity4/.julia/dev/LoweredCodeUtils/test/codeedges.jl:340 within `unknown scope`
2 ─ global revise538
│ $(Expr(:latestworld))
│ $(Expr(:method, :(Main.ModEval.revise538)))
│ $(Expr(:latestworld))
│ $(Expr(:latestworld))
│ %7 = Main.ModEval.revise538
│ %8 = dynamic Core.Typeof(%7)
│ %9 = Main.ModEval.Float32
│ %10 = builtin Core.svec(%8, %9)
│ %11 = builtin Core.svec()
│ %12 = builtin Core.svec(%10, %11, $(QuoteNode(:(#= /home/serenity4/.julia/dev/LoweredCodeUtils/test/codeedges.jl:340 =#))))
│ $(Expr(:method, :(Main.ModEval.revise538), :(%12), CodeInfo(
@ /home/serenity4/.julia/dev/LoweredCodeUtils/test/codeedges.jl:341 within `unknown scope`
1 ─ %1 = Main.ModEval.println
│ %2 = dynamic (%1)("F32")
└── return %2
)))
│ $(Expr(:latestworld))
│ %15 = Main.ModEval.revise538
└── $(Expr(:leave, :(%1)))
3 ─ return %15
4 ┄ e = $(Expr(:the_exception))
│ @ /home/serenity4/.julia/dev/LoweredCodeUtils/test/codeedges.jl:344 within `unknown scope`
│ %19 = Main.ModEval.println
│ %20 = dynamic (%19)("caught error")
│ $(Expr(:pop_exception, :(%1)))
└── return %20
)
julia> lr[13]
falseNothing in the refactor depends on that so I'm fine removing this change if necessary. |
|
Any input regarding my comment above? If unsure, I can restore the previous behavior. |
c5376ba to
b985309
Compare
ee3dc4c to
8d8784f
Compare
|
This should be ready, unless someone objects to #125 (comment). I adjusted the related test in e624e99 so that it passes with the new behavior. Before merging, I would first register version 2.0 of CodeTracking, then update JuliaInterpreter, then remove the |
I apologize for the delayed response. Also, how would you like to proceed with the entire ecosystem to adapt to this change? I don't have an write access to CodeTracking.jl so we need to ask @timholy to make a release if we need to release a new version of it first. |
Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com>
The test was working fine before that, it's just that one of the changes I made goes in the direction of only reevaluating the function definition, not the method definition. It is a small change that can be removed without compromising this PR, that I thought would be good to have. As we were testing that the method definition was reevaluated, I simply updated the test to test that no method gets reevaluated, because we then only reevaluate the function definition. |
|
For the release of CodeTracking v2, I opened JuliaDebug/CodeTracking.jl#142. |
…to support-external-methodtables
a1091d3 to
2cada0d
Compare
|
I also agree that the new behavior is better. |
|
Green! Merge at will, @serenity4 |
This allows Revise to work with JuliaDebug/CodeTracking.jl#140. Requires JuliaDebug/JuliaInterpreter.jl#680.
This change is breaking, so we may either:
signaturesvector that uses the previoussigformat.