owenca wrote:

> > > Another possibility to consider for the original bug: 
> > > `(single_identifier)` is almost certainly a cast, not redundant 
> > > parentheses, unless `single_identifier` names a macro argument. So I 
> > > wonder if that would be a better heuristic to use to fix the regression.
> > 
> > 
> > I don’t think that would work as`(identifier)` can be a number of 
> > constructs depending on the context. It can be part of a function/macro 
> > call, function declaration, macro definition, C++ cast, C cast, `sizeof` 
> > operand, etc.
> 
> OK, but the context is deciding whether `(identifier)&x` or `(identifier)*x` 
> is a binary operator or a cast. Given no other information, the fact that 
> it's a single identifier seems like a very strong signal that it's a cast.
> 
> I don't think this PR fixes #83400 -- handling a small handful of common 
> types won't address the same issue for the much larger class of cases where 
> the type name is not one of these types. Eg, in #83400 itself the examples 
> included:
> 
> ```diff
> -             static _FORCE_INLINE_ m_type get(const Variant *v) { return 
> (m_type)*VariantInternal::get_int(v); }    \
> +             static _FORCE_INLINE_ m_type get(const Variant *v) { return 
> (m_type) * VariantInternal::get_int(v); }  \
> ```
> 
> But looking for a parenthesized single identifier addresses all of the 
> examples in the issue.

This patch does not only fix formatting of C-casting to a C++ standard type. It 
correctly identifies (most of) such types and might have fixed other kinds of 
bugs. For casting to a user-defined type, the TypeNames option can be used.

https://github.com/llvm/llvm-project/pull/83709
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to