Re: [PATCH 02/17] cocci: fix incorrect & verbose "the_repository" rules
- From
Glen Choo <chooglen@google.com>
- Date
- Mar 22, 2023, 22:46 UTC
- Message-ID
- <kl6ledpge75s.fsf@chooglen-macbookpro.roam.corp.google.com>
- In-Reply-To
- <patch-02.17-1b1fc5d41f5-20230317T152724Z-avarab@gmail.com>
Every time I try to read cocci and spatch docs, I'm impressed at how impenetrable they are ;) Nevertheless, I'd still like to understand how the pattern works. I'll take a stab in the dark, and perhaps you can correct me.
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 43 quoted lines
> +( > +- read_object_file > ++ repo_read_object_file > +| > +- has_object_file > ++ repo_has_object_file > +| > +- has_object_file_with_flags > ++ repo_has_object_file_with_flags > +| > +- parse_commit_internal > ++ repo_parse_commit_internal > +| > +- parse_commit > ++ repo_parse_commit > +| > +- get_merge_bases > ++ repo_get_merge_bases > +| > +- get_merge_bases_many > ++ repo_get_merge_bases_many > +| > +- get_merge_bases_many_dirty > ++ repo_get_merge_bases_many_dirty > +| > +- in_merge_bases > ++ repo_in_merge_bases > +| > +- in_merge_bases_many > ++ repo_in_merge_bases_many > +| > +- get_commit_buffer > ++ repo_get_commit_buffer > +| > +- unuse_commit_buffer > ++ repo_unuse_commit_buffer > +| > +- logmsg_reencode > ++ repo_logmsg_reencode > +| > +- format_commit_message > ++ repo_format_commit_message > +)
I assume that `|` characters in parentheses are a logical OR, and each of the expressions checks for the `-` side in the original and replaces it with the `+` side.
> + ( > ++ the_repository, > + ...)
Then this is another expression that matches literal `()` after the previous expression? `+the_repository` adds `the_repository` right after the opening `(`, then leaves the uninteresting `...` in place.
If so, I don't know how cocci/spatch tells the difference between literal `()` vs an expression in the syntax (preceding whitespace?).
Either way, as Elijah said, your plain explanation is clear enough that I feel comfortable with this.
> -- > 2.40.0.rc1.1034.g5867a1b10c5