Make Expression and Statement separable #2209
Merged
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.
This is a bigger change than previous PRs related to #1783, so yeah, much churn :( This is mostly due to the need to split
visit_list()
to deal separately with Expression and Statement, and similarly for.node()
,.nodes()
etc. I think it is unavoidable.The good news:
checkstrformat.py
andstats.py
which should not be hard, and replacing the type oftype_map
to a be a callable (there should be a name for this type). After that, there will be almost no mention of Node in the code.No casts are needed, but there are 7 assertions, in places where the calling code assumes to be true anyway (these also need the separation during tests, otherwise they are vacuous). I think these assertions will not be needed if and when there will be ExpressionVisitor and StatementVisitor.
I will not be available for the next two days. Happy new year everybody!