blob: 2d9782896ea05d7ad167493a8a64d0954910551c [file] [log] [blame]
// RUN: %check_clang_tidy %s modernize-use-auto %t -- \
// RUN: -config="{CheckOptions: [{key: modernize-use-auto.MinTypeNameLength, value: '5'}]}" \
// RUN: -- -std=c++11 -frtti
extern int foo();
using VeryVeryVeryLongTypeName = int;
int bar() {
int a = static_cast<VeryVeryVeryLongTypeName>(foo());
// strlen('int') = 4 < 5, so skip it,
// even strlen('VeryVeryVeryLongTypeName') > 5.
unsigned b = static_cast<unsigned>(foo());
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when initializing with a cast to avoid duplicating the type name [modernize-use-auto]
// CHECK-FIXES: auto b = static_cast<unsigned>(foo());
bool c = static_cast<bool>(foo());
// strlen('bool') = 4 < 5, so skip it.
const bool c1 = static_cast<const bool>(foo());
// strlen('bool') = 4 < 5, so skip it, even there's a 'const'.
unsigned long long ull = static_cast<unsigned long long>(foo());
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when initializing with a cast to avoid duplicating the type name [modernize-use-auto]
// CHECK-FIXES: auto ull = static_cast<unsigned long long>(foo());
return 1;
}