Report why assigning oversized hex strings to bytes fail

This commit is contained in:
Alex Beregszaszi
2020-09-23 16:46:47 +01:00
parent 27f768f4d6
commit ca743191b7
18 changed files with 59 additions and 1 deletions
+5 -1
View File
@@ -1351,7 +1351,11 @@ StringLiteralType::StringLiteralType(string _value):
BoolResult StringLiteralType::isImplicitlyConvertibleTo(Type const& _convertTo) const
{
if (auto fixedBytes = dynamic_cast<FixedBytesType const*>(&_convertTo))
return static_cast<size_t>(fixedBytes->numBytes()) >= m_value.size();
{
if (static_cast<size_t>(fixedBytes->numBytes()) < m_value.size())
return BoolResult::err("Literal is larger than the type.");
return true;
}
else if (auto arrayType = dynamic_cast<ArrayType const*>(&_convertTo))
return
arrayType->location() != DataLocation::CallData &&