size capabilities functioning properly for fixed types

This commit is contained in:
RJ Catalano 2016-03-18 13:52:00 -05:00 committed by VoR0220
parent 91fda50922
commit a1a2eac5fd

View File

@ -580,16 +580,11 @@ bool ConstantNumberType::isImplicitlyConvertibleTo(Type const& _convertTo) const
int forSignBit = (targetType->isSigned() ? 1 : 0); int forSignBit = (targetType->isSigned() ? 1 : 0);
if (m_value > 0) if (m_value > 0)
{ {
if ( bool properlyScaledBits = m_scalingFactor <= targetType->fractionalBits() ?
m_value <= (u256(-1) >> (256 - targetType->numBits() + forSignBit)) && true : m_scalingFactor == 1 && targetType->fractionalBits() == 0 ? true : false;
m_scalingFactor <= targetType->fractionalBits() if (m_value <= (u256(-1) >> (256 - targetType->numBits() + forSignBit)) && properlyScaledBits)
)
return true; return true;
else if ( else if (targetType->isSigned() && -m_value <= (u256(1) << (targetType->numBits() - forSignBit)) && properlyScaledBits)
targetType->isSigned() &&
-m_value <= (u256(1) >> (256 - targetType->numBits() + forSignBit)) &&
m_scalingFactor <= targetType->fractionalBits()
)
return true; return true;
return false; return false;
} }