diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 26801640e99..7133d41b5fd 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -8010,12 +8010,12 @@ void SymbolDatabase::setValueTypeInTokenList(bool reportDebugWarnings, Token *to if (mSettings.platform.type != Platform::Type::Unspecified) { if (type <= ValueType::Type::INT && mSettings.platform.isIntValue(unsignedSuffix ? (value >> 1) : value)) type = ValueType::Type::INT; - else if (type <= ValueType::Type::INT && !MathLib::isDec(tokStr) && mSettings.platform.isIntValue(value >> 2)) { + else if (type <= ValueType::Type::INT && !MathLib::isDec(tokStr) && mSettings.platform.isIntValue(value >> 1)) { type = ValueType::Type::INT; sign = ValueType::Sign::UNSIGNED; } else if (type <= ValueType::Type::LONG && mSettings.platform.isLongValue(unsignedSuffix ? (value >> 1) : value)) type = ValueType::Type::LONG; - else if (type <= ValueType::Type::LONG && !MathLib::isDec(tokStr) && mSettings.platform.isLongValue(value >> 2)) { + else if (type <= ValueType::Type::LONG && !MathLib::isDec(tokStr) && mSettings.platform.isLongValue(value >> 1)) { type = ValueType::Type::LONG; sign = ValueType::Sign::UNSIGNED; } else if (mSettings.platform.isLongLongValue(unsignedSuffix ? (value >> 1) : value)) diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index 85ee8430a77..62a61a57a61 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -9922,6 +9922,13 @@ class TestSymbolDatabase : public TestFixture { ASSERT_EQUALS("signed long long", typeOf("0xFFFFFFFFFFFF;\n", "0xFFFFFFFFFFFF", false, &s)); ASSERT_EQUALS("unsigned long long", typeOf("0xFFFFFFFFFFFFU;\n", "0xFFFFFFFFFFFFU", false, &s)); ASSERT_EQUALS("unsigned long long", typeOf("0xFFFFFFFF00000000;\n", "0xFFFFFFFF00000000", false, &s)); + ASSERT_EQUALS("signed long", typeOf("0x10000;\n", "0x10000", false, &s)); + ASSERT_EQUALS("signed long", typeOf("0x1FFFF;\n", "0x1FFFF", false, &s)); + ASSERT_EQUALS("signed long long", typeOf("0x100000000;\n", "0x100000000", false, &s)); + ASSERT_EQUALS("signed long long", typeOf("0x100000000L;\n", "0x100000000L", false, &s)); + ASSERT_EQUALS("unsigned long long", typeOf("0x100000000U;\n", "0x100000000U", false, &s)); + ASSERT_EQUALS("unsigned long long", typeOf("0x100000000UL;\n", "0x100000000UL", false, &s)); + ASSERT_EQUALS("signed long long", typeOf("0x1FFFFFFFF;\n", "0x1FFFFFFFF", false, &s)); ASSERT_EQUALS("signed long", typeOf("2147483648;\n", "2147483648", false, &sSameSize)); ASSERT_EQUALS("unsigned long", typeOf("0xc000000000000000;\n", "0xc000000000000000", false, &sSameSize));