diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 7b2bee0d80e..dcbfbfd9275 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -478,6 +478,7 @@ class TestTokenizer : public TestFixture { TEST_CASE(cppKeywordInCSource); TEST_CASE(cppcast); + TEST_CASE(ccast); TEST_CASE(checkHeader1); @@ -8411,6 +8412,19 @@ class TestTokenizer : public TestFixture { } } + void ccast() { + const char code[] = "a = (int)x;\n" // #13579 + "int (*p)[10];\n"; + + SimpleTokenizer tokenizer(settingsDefault, *this); + ASSERT(tokenizer.tokenize(code)); + + const Token* par = Token::findsimplematch(tokenizer.tokens(), "("); + ASSERT(par->isCast()); + par = Token::findsimplematch(par->next(), "("); + ASSERT(!par->isCast()); + } + #define checkHdrs(...) checkHdrs_(__FILE__, __LINE__, __VA_ARGS__) template std::string checkHdrs_(const char* file, int line, const char (&code)[size], bool checkHeadersFlag) { diff --git a/test/testvalueflow.cpp b/test/testvalueflow.cpp index dc5345ab3e3..c879b9cffd5 100644 --- a/test/testvalueflow.cpp +++ b/test/testvalueflow.cpp @@ -6290,6 +6290,14 @@ class TestValueFlow : public TestFixture { "}\n"; values = tokenValues(code, "x > 5", ValueFlow::Value::ValueType::UNINIT); ASSERT_EQUALS(0, values.size()); + + code = "void f() {\n" // #11152 + " char b[10];\n" + " sprintf(b, \"abc\");\n" + " printf(\"%s\", b);\n" + "}\n"; + values = tokenValues(code, "b )", ValueFlow::Value::ValueType::UNINIT); + ASSERT_EQUALS(0, values.size()); } void valueFlowConditionExpressions() {