This repository was archived by the owner on Aug 31, 2023. It is now read-only.
feat(rome_analyze): improve the extensibility of the declare_rule
macro
#2964
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.
Summary
This PR modifies the
RuleMeta
trait and how it's implemented in thedeclare_rule
: instead of having individual constants for each metadata field, the trait now uses a single const-constructibleRuleMetadata
struct. This struct takes all the required fields as arguments on its constructor, then allows optional fields to have a non-default value set through builder methods. This allows thedeclare_rule
to only explicitly match on the require fields, then expand all additional rule properties into builder method calls on the metadata object. While implementing this I also made the trailing comma on rule properties mandatory, it should make future changes on rule metadata easier to readTest Plan
This is a syntax level change with all the new code contained in constant expressions, so everything is checked at compile time