diff --git a/clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp b/clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp --- a/clang-tools-extra/clang-tidy/google/IntegerTypesCheck.cpp +++ b/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: // diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -115,6 +115,9 @@ `CommentUserDefiniedLiterals`, `CommentStringLiterals`, `CommentCharacterLiterals` & `CommentNullPtrs` options. +- The :doc:`google-runtime-int ` + check has been disabled in Objective-C++. + - The `Acronyms` and `IncludeDefaultAcronyms` options for the :doc:`objc-property-declaration ` check have been removed. diff --git a/clang-tools-extra/test/clang-tidy/google-runtime-int.m b/clang-tools-extra/test/clang-tidy/google-runtime-int.m new file mode 100644 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/google-runtime-int.m @@ -0,0 +1,32 @@ +// RUN: clang-tidy -checks=-*,google-runtime-int %s 2>&1 -- | count 0 +// RUN: clang-tidy -checks=-*,google-runtime-int %s 2>&1 -- -x objective-c++ | count 0 + +typedef long NSInteger; +typedef unsigned long NSUInteger; + +@interface NSString +@property(readonly) NSInteger integerValue; +@property(readonly) long long longLongValue; +@property(readonly) NSUInteger length; +@end + +NSInteger Foo(NSString *s) { + return [s integerValue]; +} + +long long Bar(NSString *s) { + return [s longLongValue]; +} + +NSUInteger Baz(NSString *s) { + return [s length]; +} + +unsigned short NSSwapShort(unsigned short inv); + +long DoSomeMath(long a, short b) { + short c = NSSwapShort(b); + long a2 = a * 5L; + return a2 + c; +} +