On Mon, 15 Jun 2026 at 20:39, Pierrick Bouvier
<[email protected]> wrote:
>
> C++ has a different style when it comes to space around references,
> dereferences, so don't report it.
> Also, closing templates with >> gets wrongly confused with >> operator,
> so just relax this check.
>
> Some examples:
> ERROR: spaces required around that '&' (ctx:WxV)
> +                auto &[counter, p] = *static_cast<TbData*>(udata);
>                       ^
>
> ERROR: spaces required around that '*' (ctx:VxO)
> +                auto &[counter, p] = *static_cast<TbData*>(udata);
>                                                          ^
>
> ERROR: spaces required around that '>>' (ctx:VxW)
> +        std::vector<std::pair<Vaddr, uint64_t>> v;                           
>                    ^
>
> Signed-off-by: Pierrick Bouvier <[email protected]>
> ---
>  scripts/checkpatch.pl | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 2189db19f54..538e059e265 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2621,6 +2621,31 @@ sub process {
>                                                 if ($op eq '::') {
>                                                         $ok = 1;
>                                                 }
> +
> +                                               # Ignore * in C++: templates 
> and
> +                                               # pointer types are 
> incorrectly
> +                                               # flagged. Example:
> +                                               # static_cast<T*>
> +                                               if ($op eq '*') {
> +                                                       $ok = 1;
> +                                               }
> +
> +                                               # Ignore & in C++: & means a
> +                                               # reference, and this create
> +                                               # issues with some 
> constructions.
> +                                               # Example:
> +                                               # auto &[first, second] = 
> pair;
> +                                               if ($op eq '&') {
> +                                                       $ok = 1;
> +                                               }
> +
> +                                               # Ignore >> in C++
> +                                               # checkpatch is confused by
> +                                               # >> closing templates. 
> Example:
> +                                               # vector<pair<A, B>>
> +                                               if ($op eq '>>') {
> +                                                       $ok = 1;
> +                                               }
>                                         }

Reviewed-by: Peter Maydell <[email protected]>

thanks
-- PMM

Reply via email to