Repository navigation
Fix fine-grained crash caused by unneeded extra parse_file()s - #4980
Merged
Merged
Conversation
load_graph() contains code to parse ancestor modules that get new children. Since load_graph() did not communicate that these modules had been parsed to fine-grained mode, this caused problems with fine-grained mode. That code was added in #1865 to fix a bug where 'import from' of a newly added submodule would not work in incremental mode because it didn't appear in the parent module's symbol table. The need to reload the parent to fix this was obviated by at the modules map to find possible submodules. Since the code isn't needed any more and it is causing trouble, we just remove it.
Collaborator
Author
|
@Michael0x2a If you still have any context on this and it seems like I'm missing something, feel free to let me know |
JukkaL
approved these changes
Apr 27, 2018
JukkaL
left a comment
Collaborator
There was a problem hiding this comment.
This fix seems good to me, but I don't fully understand the intricacies of how this part of the build process works, so I'd appreciate another pair of eyes.
Maybe @gvanrossum can also have a look?
gvanrossum
approved these changes
Apr 27, 2018
gvanrossum
left a comment
Member
There was a problem hiding this comment.
I can't say I understand this code in detail, but Sully has convinced me off-line that he's done all the necessary checking to see whether this is safe, so let's go with it.
msullivan
added a commit
that referenced
this pull request
Apr 27, 2018
load_graph() contains code to parse ancestor modules that get new children. Since load_graph() did not communicate that these modules had been parsed to fine-grained mode, this caused problems with fine-grained mode. That code was added in #1865 to fix a bug where 'import from' of a newly added submodule would not work in incremental mode because it didn't appear in the parent module's symbol table. The need to reload the parent to fix this was obviated by at the modules map to find possible submodules. Since the code isn't needed any more and it is causing trouble, we just remove it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
load_graph() contains code to parse ancestor modules that
get new children. Since load_graph() did not communicate that
these modules had been parsed to fine-grained mode, this caused
problems with fine-grained mode.
That code was added in #1865 to fix a bug where 'import from'
of a newly added submodule would not work in incremental mode
because it didn't appear in the parent module's symbol table.
The need to reload the parent to fix this was obviated by #2061,
which makes semantic analysis directly inspect the modules map
when doing 'import from' to find possible submodules.
Since the code isn't needed any more and it is causing trouble,
we just remove it.
I would like to cherry-pick this into 0.600 (#4946).