Abstract SbqNode in preparation for adding a labeled variant #203
+210
−115
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 pure refactoring change to introduce a layer of abstraction around SBQ nodes so that we can introduce a labeled variant in a coming PR.
The basic idea is for
SbqNode
to become an enum wrapper class around the concrete implementations, currently justPlainSbqNode
. SinceSbqNode
has a bunch of derived classes and traits, I had to introduce wrappers for those too, in addition to tweaking some abstractions. (It gets a little ugly, and I'm open to suggestions to find ways to simplify. I did experiment with an alternate approach, which was to add the SBQ node type as a parameter inSbqSpeedupStorage
, but this turned out to be equally messy, due to the same plethora of derived traits and classes associated withSbqNode
.)Test strategy: existing unit tests. No new functionality added.