Use owner stack to associate owners to methods #2025
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.
Motivation
Closes #1338
Previous attempt #1264.
We cannot use a single owner value to keep track of method owners because there might be several levels of nesting. We need to use a stack.
On the original PR, the main source of discussion was that it was trying to get rid of
@stack
to have only an owner stack. Unfortunately, that would break aliases which need to remember the exact nesting in which they were found.Thinking more about the problem, I think it should be fine to maintain two separate stacks. The only values that need to remember the exact nesting where they were discovered are unresolved aliases. Being forced to store the original nesting arrays on every namespace would be wasteful. Better to use two arrays and let them be garbage collected as soon as we're done.
Implementation
Changed
@current_owner
to be an@owner_stack
instead.Automated Tests
Added a test that reproduces the bug.