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.
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
Relocate recursion detection logic. #27
Relocate recursion detection logic. #27
Changes from 1 commit
24e7647
c97f264
a9dd063
3741e92
19f4e00
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
If this
if
is removed, is the output still correct? Could we remove this, and let theenter()
function handle rendering the nil interfaces, and removevisitInterface()
?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.
We can definitely do that. However we still need this condition from
visitor.visitInterface()
to keep the tests as they are.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.
Hrm, I guess since there is still interface-specific logic it belongs in a
visitInterface()
method, but something about having to do this check twice feels wrong, but I haven't come up with a "better" way yet.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.
I think now that this has been made more generic, it probably shouldn't be responsible for
nil
rendering at all, only for the recursion. Which means we should let thenil
rendering fall through to the filters and main switch statement regardless of the type (ie, not just interfaces). Does that make sense?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.
Yes, definitely it makes sense. I'll commit more changes towards that direction soon.
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.
Ok, my last commit is an attempt to let only a single purpose for
visitor.enter()
method - recursion detection and recursive marker rendering.I had to replace
Value.canNil()
withValue.canPointer()
method sincevisitor.enter()
no longer needs to check the value fornil
, but it still needs to check if we can safely acquire a pointer from the value.