@@ -5054,6 +5054,46 @@ class TestValueFlow : public TestFixture {
50545054 ASSERT_EQUALS (true , value.isKnown ());
50555055 ASSERT_EQUALS (1 , value.intvalue );
50565056
5057+ code = " bool f() {\n "
5058+ " int* p{};\n "
5059+ " return p == nullptr;\n " // <- known value
5060+ " }" ;
5061+ value = valueOfTok (code, " ==" );
5062+ ASSERT_EQUALS (true , value.isKnown ());
5063+ ASSERT_EQUALS (1 , value.intvalue );
5064+
5065+ code = " bool f() {\n "
5066+ " int* p{ nullptr };\n "
5067+ " return p == nullptr;\n " // <- known value
5068+ " }" ;
5069+ value = valueOfTok (code, " ==" );
5070+ ASSERT_EQUALS (true , value.isKnown ());
5071+ ASSERT_EQUALS (1 , value.intvalue );
5072+
5073+ code = " bool f() {\n "
5074+ " int* p{ 0 };\n "
5075+ " return p == nullptr;\n " // <- known value
5076+ " }" ;
5077+ value = valueOfTok (code, " ==" );
5078+ ASSERT_EQUALS (true , value.isKnown ());
5079+ ASSERT_EQUALS (1 , value.intvalue );
5080+
5081+ code = " bool f() {\n "
5082+ " int* p = {};\n "
5083+ " return p == nullptr;\n " // <- known value
5084+ " }" ;
5085+ value = valueOfTok (code, " ==" );
5086+ ASSERT_EQUALS (true , value.isKnown ());
5087+ ASSERT_EQUALS (1 , value.intvalue );
5088+
5089+ code = " bool f() {\n "
5090+ " int i = {};\n "
5091+ " return i == 0;\n " // <- known value
5092+ " }" ;
5093+ value = valueOfTok (code, " ==" );
5094+ ASSERT_EQUALS (true , value.isKnown ());
5095+ ASSERT_EQUALS (1 , value.intvalue );
5096+
50575097 // calculation with known result
50585098 code = " int f(int x) { a = x & 0; }" ; // <- & is 0
50595099 value = valueOfTok (code, " &" );
0 commit comments