-
-
Notifications
You must be signed in to change notification settings - Fork 269
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix scan_pkg issue with cycle over-detection #3657
Conversation
I don't understand why this patch isn't a no-op. On what path does this change behavior? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the root, I didn't see where it would get set to false eventually in could_be_cycle, but I could have just missed it
It should get set on return from scan_deps!. I mean, I may have messed it up, but just from what I can tell, this PR is literally equivalent. |
Doesn't the root of the search call scan_pkg and not call scan_deps? I also might not be reading that bit right, this change is purely by visual inspection |
I'm going to hold off backporting #3651 to 1.9 until this is resolved |
scan_deps! always gets called on the first call to scan_pkg. Again, as far as I can tell, this PR is a no-op. |
Ah, okay, right. I was confused by having a mutating helper method in a conditional if statement, and that wasn't processing in my mind as being executed always. This PR might remove the need for Box-ing of the two functions for the mutual recursion pairing, but they are functionally equivalent. |
It'd be tidy to resolve this before moving this code to Base. On a fully precompiled env with DiffEq This PR
master
|
So I don't think this really needs to be "resolved". |
The main intent here is to ensure that
could_be_cycle[pkg] = false
happens even when called from the root package, and not just recursively fromscan_deps