refactor: simplify Spec::merge with local macros #451
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.
Summary
Replace 14+ repetitive if-check patterns in
Spec::mergewith three local macros:merge_str!for String fields (replace if non-empty)merge_opt!for Option fields (replace if Some)merge_extend!for Vec/IndexMap fields (extend if non-empty)This reduces boilerplate and makes the merging strategy for each field immediately clear.
Before: 47 lines with repetitive
ifpatternsAfter: 42 lines with declarative macro calls
Test plan
🤖 Generated with Claude Code
Note
Refactors
Spec::mergeto reduce duplication and clarify merge behavior without changing functionality.merge_str!(non-emptyString),merge_opt!(OptionisSome), andmerge_extend!(extend non-empty collections)name,bin,usage,about*,version,author,disable_help,min_usage_version,default_subcommand,complete, andexamplesconfig(delegatedmerge) andcmd(self.cmd.merge(...))Written by Cursor Bugbot for commit 5145714. This will update automatically on new commits. Configure here.