gchatelet marked 8 inline comments as done. gchatelet added inline comments.
================ Comment at: test/clang-tidy/cppcoreguidelines-narrowing-conversions.cpp:164 + while (i) { + // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: narrowing conversion from 'int' to 'bool' [cppcoreguidelines-narrowing-conversions] + } ---------------- JonasToth wrote: > lebedev.ri wrote: > > courbet wrote: > > > What about providing a fix for this one : > > > `while (i != 0) {` > > Is this //actually// a narrowing conversion as per the CPPCG? > > Conversion to bool is a special case, it's not a truncation, but a `x != 0`. > > I'd think cases like these where bool was pretty clearly meant (`if()`, > > `while()`, `for()`, ???) should be exempt. > No it is not an narrowing conversion the CPPCG are concerned: > https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es46-avoid-lossy-narrowing-truncating-arithmetic-conversions > > Short: > ``` > ES.46: Avoid lossy (narrowing, truncating) arithmetic conversions > > Enforcement > > A good analyzer can detect all narrowing conversions. However, flagging all > narrowing conversions will lead to a lot of false positives. Suggestions: > > - flag all floating-point to integer conversions (maybe only float->char > and double->int. Here be dragons! we need data) > - flag all long->char (I suspect int->char is very common. Here be > dragons! we need data) > - consider narrowing conversions for function arguments especially suspect > ``` > > We do have a readability-check that is concerned about int -> bool > conversions. Because of that I think we could safely ignore the `int->bool` > conversion. > But `float -> bool` is still suspicious in my opinion. It has the same > semantics, but comparing `float` on equality is dangerous and one could argue > it shall be enforced through point 1 (all float-to-int conversions). @JonasToth Do you have the name of the readability check so I can document the behavior? Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D53488 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits