@@ -150,7 +150,7 @@ class TestValueFlow : public TestFixture {
150150 TEST_CASE (valueFlowIdempotent);
151151 TEST_CASE (valueFlowUnsigned);
152152 TEST_CASE (valueFlowMod);
153- TEST_CASE (valueFlowInc );
153+ TEST_CASE (valueFlowIncDec );
154154 TEST_CASE (valueFlowNotNull);
155155 TEST_CASE (valueFlowSymbolic);
156156 TEST_CASE (valueFlowSymbolicIdentity);
@@ -7925,7 +7925,7 @@ class TestValueFlow : public TestFixture {
79257925 ASSERT_EQUALS (false , testValueOfXImpossible (code, 3U , 1 ));
79267926 }
79277927
7928- void valueFlowInc () {
7928+ void valueFlowIncDec () {
79297929 const char *code;
79307930 std::list<ValueFlow::Value> values;
79317931
@@ -7939,6 +7939,24 @@ class TestValueFlow : public TestFixture {
79397939 values = tokenValues (code, " i ]" );
79407940 ASSERT_EQUALS (1U , values.size ());
79417941 ASSERT_EQUALS (0LLU, values.back ().intvalue );
7942+
7943+ code = " int f() {\n "
7944+ " const int a[1] = {};\n "
7945+ " unsigned char i = 255;\n "
7946+ " return a[++i];\n "
7947+ " }\n " ;
7948+ values = tokenValues (code, " ++" );
7949+ ASSERT_EQUALS (1U , values.size ());
7950+ ASSERT_EQUALS (0LLU, values.back ().intvalue );
7951+
7952+ code = " int f() {\n "
7953+ " const int a[128] = {};\n "
7954+ " char b = -128;\n "
7955+ " return a[--b];\n "
7956+ " }\n " ;
7957+ values = tokenValues (code, " --" );
7958+ ASSERT_EQUALS (1U , values.size ());
7959+ ASSERT_EQUALS (127LLU, values.back ().intvalue );
79427960 }
79437961
79447962 void valueFlowNotNull ()
0 commit comments