Fixed #8350 (False positive: enum class static_cast to int is treated as non-primitive when type inference is used) (#1042)
This commit is contained in:
parent
ec0cc4e29c
commit
5673348215
|
@ -50,13 +50,15 @@ public:
|
||||||
: Check(myName(), tokenizer, settings, errorLogger) {
|
: Check(myName(), tokenizer, settings, errorLogger) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void runSimplifiedChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) {
|
void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) {
|
||||||
if (tokenizer->isC())
|
if (tokenizer->isC())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CheckPostfixOperator checkPostfixOperator(tokenizer, settings, errorLogger);
|
CheckPostfixOperator checkPostfixOperator(tokenizer, settings, errorLogger);
|
||||||
checkPostfixOperator.postfixOperator();
|
checkPostfixOperator.postfixOperator();
|
||||||
}
|
}
|
||||||
|
void runSimplifiedChecks(const Tokenizer * /*tokenizer*/, const Settings * /*settings*/, ErrorLogger * /*errorLogger*/) {
|
||||||
|
}
|
||||||
|
|
||||||
/** Check postfix operators */
|
/** Check postfix operators */
|
||||||
void postfixOperator();
|
void postfixOperator();
|
||||||
|
|
|
@ -40,7 +40,6 @@ private:
|
||||||
Tokenizer tokenizer(&settings, this);
|
Tokenizer tokenizer(&settings, this);
|
||||||
std::istringstream istr(code);
|
std::istringstream istr(code);
|
||||||
tokenizer.tokenize(istr, "test.cpp");
|
tokenizer.tokenize(istr, "test.cpp");
|
||||||
tokenizer.simplifyTokenList2();
|
|
||||||
|
|
||||||
// Check for postfix operators..
|
// Check for postfix operators..
|
||||||
CheckPostfixOperator checkPostfixOperator(&tokenizer, &settings, this);
|
CheckPostfixOperator checkPostfixOperator(&tokenizer, &settings, this);
|
||||||
|
@ -59,6 +58,7 @@ private:
|
||||||
TEST_CASE(testtemplate); // #4686
|
TEST_CASE(testtemplate); // #4686
|
||||||
TEST_CASE(testmember);
|
TEST_CASE(testmember);
|
||||||
TEST_CASE(testcomma);
|
TEST_CASE(testcomma);
|
||||||
|
TEST_CASE(testauto); // #8350
|
||||||
}
|
}
|
||||||
|
|
||||||
void testsimple() {
|
void testsimple() {
|
||||||
|
@ -352,6 +352,18 @@ private:
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void testauto() { // #8350
|
||||||
|
check("enum class Color { Red = 0, Green = 1, };\n"
|
||||||
|
"int fun(const Color color) {\n"
|
||||||
|
" auto a = 0;\n"
|
||||||
|
" for (auto i = static_cast<int>(color); i < 10; i++) {\n"
|
||||||
|
" a += i;\n"
|
||||||
|
" }\n"
|
||||||
|
" return a;\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST(TestPostfixOperator)
|
REGISTER_TEST(TestPostfixOperator)
|
||||||
|
|
Loading…
Reference in New Issue