--------------------------------------------------------------------------- Checking for long cast of int result const long x = var1 * var2; ---------------------------------------------------------------------------
| 313 | // Checking for long cast of int result const long x = var1 * var2; |
| 314 | //--------------------------------------------------------------------------- |
| 315 | static bool checkTypeCombination(ValueType src, ValueType tgt, const Settings& settings) |
| 316 | { |
| 317 | static const std::pair<ValueType::Type, ValueType::Type> typeCombinations[] = { |
| 318 | { ValueType::Type::INT, ValueType::Type::LONG }, |
| 319 | { ValueType::Type::INT, ValueType::Type::LONGLONG }, |
| 320 | { ValueType::Type::LONG, ValueType::Type::LONGLONG }, |
| 321 | { ValueType::Type::FLOAT, ValueType::Type::DOUBLE }, |
| 322 | { ValueType::Type::FLOAT, ValueType::Type::LONGDOUBLE }, |
| 323 | { ValueType::Type::DOUBLE, ValueType::Type::LONGDOUBLE }, |
| 324 | }; |
| 325 | |
| 326 | src.reference = Reference::None; |
| 327 | tgt.reference = Reference::None; |
| 328 | |
| 329 | const std::size_t sizeSrc = src.getSizeOf(settings, ValueType::Accuracy::ExactOrZero, ValueType::SizeOf::Pointer); |
| 330 | const std::size_t sizeTgt = tgt.getSizeOf(settings, ValueType::Accuracy::ExactOrZero, ValueType::SizeOf::Pointer); |
| 331 | if (!(sizeSrc > 0 && sizeTgt > 0 && sizeSrc < sizeTgt)) |
| 332 | return false; |
| 333 | |
| 334 | return std::any_of(std::begin(typeCombinations), std::end(typeCombinations), [&](const std::pair<ValueType::Type, ValueType::Type>& p) { |
| 335 | return src.type == p.first && tgt.type == p.second; |
| 336 | }); |
| 337 | } |
| 338 | |
| 339 | void CheckTypeImpl::checkLongCast() |
| 340 | { |
no test coverage detected