Re: [PATCH] D59336: [clang-tidy] Disable google-runtime-int in Objective-C++ 🔓

Stephane Moore via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 13 15:32:35 PDT 2019


I was uncertain whether or not this change required new tests. A previous
change which disabled this check in languages other than C++ did not
include additional tests:
https://github.com/llvm/llvm-project/commit/ec3e5d6fd87862eb77a2b0320d79b9a4427d39df#diff-a491be84e1b831aeaea56c39b5eb898c

If there is a preference to add tests for this change, I can do so.

On Wed, Mar 13, 2019 at 3:21 PM Roman Lebedev <lebedev.ri at gmail.com> wrote:

> test?
>
> On Thu, Mar 14, 2019 at 1:17 AM Stephane Moore via Phabricator via
> cfe-commits <cfe-commits at lists.llvm.org> wrote:
> >
> > stephanemoore created this revision.
> > Herald added subscribers: cfe-commits, jdoerfert, xazax.hun.
> > Herald added a project: clang.
> >
> > In contrast to Google C++, Objective-C often uses built-in integer types
> > other than `int`. In fact, the Objective-C runtime itself defines the
> > types NSInteger¹ and NSUInteger² which are variant types depending on
> > the target architecture. The Objective-C style guide indicates that
> > usage of system types with variant sizes is appropriate when handling
> > values provided by system interfaces³. Objective-C++ is commonly the
> > result of conversion from Objective-C to Objective-C++ for the purpose
> > of integrating C++ functionality. The opposite of Objective-C++ being
> > used to expose Objective-C functionality to C++ is less common,
> > potentially because Objective-C has a signficantly more uneven presence
> > on different platforms compared to C++. This generally predisposes
> > Objective-C++ to commonly being more Objective-C than C++. Forcing
> > Objective-C++ developers to perform conversions between variant system
> types
> > and fixed size integer types depending on target architecture when
> > Objective-C++ commonly uses variant system types from Objective-C is
> > likely to lead to more bugs and overhead than benefit. For that reason,
> > this change proposes to disable google-runtime-int in Objective-C++.
> >
> > [1]
> https://developer.apple.com/documentation/objectivec/nsinteger?language=objc
> > [2]
> https://developer.apple.com/documentation/objectivec/nsuinteger?language=objc
> > [3] "Types long, NSInteger, NSUInteger, and CGFloat vary in size between
> > 32- and 64-bit builds. Use of these types is appropriate when handling
> > values exposed by system interfaces, but they should be avoided for most
> > other computations."
> >
> https://github.com/google/styleguide/blob/gh-pages/objcguide.md#types-with-inconsistent-sizes
> >
> >
> > Repository:
> >   rG LLVM Github Monorepo
> >
> > https://reviews.llvm.org/D59336
> >
> > Files:
> >   clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp
> >
> >
> > Index: clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp
> > ===================================================================
> > --- clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp
> > +++ clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp
> > @@ -54,7 +54,9 @@
> >
> >  void IntegerTypesCheck::registerMatchers(MatchFinder *Finder) {
> >    // Find all TypeLocs. The relevant Style Guide rule only applies to
> C++.
> > -  if (!getLangOpts().CPlusPlus)
> > +  // This check is also not applied in Objective-C++ sources as
> Objective-C
> > +  // often uses built-in integer types other than `int`.
> > +  if (!getLangOpts().CPlusPlus || getLangOpts().ObjC)
> >      return;
> >    // Match any integer types, unless they are passed to a printf-based
> API:
> >    //
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190313/290ae1aa/attachment.html>


More information about the cfe-commits mailing list