Mark string literals as not implicitly convertible to calldata arrays

This commit is contained in:
Kamil Śliwak
2020-09-16 12:44:57 +02:00
parent b08b76ffca
commit 3ba3bde65e
5 changed files with 42 additions and 0 deletions
+1
View File
@@ -1408,6 +1408,7 @@ BoolResult StringLiteralType::isImplicitlyConvertibleTo(Type const& _convertTo)
return static_cast<size_t>(fixedBytes->numBytes()) >= m_value.size();
else if (auto arrayType = dynamic_cast<ArrayType const*>(&_convertTo))
return
arrayType->location() != DataLocation::CallData &&
arrayType->isByteArray() &&
!(arrayType->dataStoredIn(DataLocation::Storage) && arrayType->isPointer()) &&
!(arrayType->isString() && !util::validateUTF8(value()));