-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Dataflow: add language-specific hook for breaking up big step relation #13455
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
Dataflow: add language-specific hook for breaking up big step relation #13455
Conversation
This allows individual languages to specify `FlowCheckNode`s, which break up the big step relation and make sure that those nodes appear in path summaries.
8cbe6b0 to
e34bcef
Compare
aschackmull
left a comment
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.
Looks reasonable to me. Only minor comment is that flowCheckNodeSpecific isn't a very good predicate name, I think. Perhaps neverSkip, neverSuppress, neverHide, or something like that would be better. The qldoc is also a little off since FlowCheckNode is a rather internal name and not really a good name to mean anything outside its small private context. Here's my alternative take on the qldoc:
Holds if `n` should never be skipped over in the `PathGraph` and in path explanations.
(And having just written that qldoc, I think I'm leaning towards neverSkip as the predicate name unless someone has a better suggestion.)
|
|
|
|
I've gone for |
hvitved
left a comment
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.
LGTM
yoff
left a comment
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.
Nice, thanks for doing this. Abused semantics is always a liability, so getting rid of that feels very good to me 👍
Python and Ruby have been (ab)using
CastNodeto do this. Go now has a use-case as well, so I have made a proper language-specific hook.