Skip to content

Commit cc6344c

Browse files
Changed instaces of isByteArrayOrString() to isByteArray() where it's only supposed to return a True for Bytes Type
1 parent 9043621 commit cc6344c

File tree

6 files changed

+12
-10
lines changed

6 files changed

+12
-10
lines changed

libsolidity/analysis/TypeChecker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1791,7 +1791,7 @@ Type const* TypeChecker::typeCheckTypeConversionAndRetrieveReturnType(
17911791
);
17921792
else
17931793
solAssert(
1794-
argArrayType->isByteArrayOrString() && !argArrayType->isString() && resultType->category() == Type::Category::FixedBytes,
1794+
argArrayType->isByteArray() && resultType->category() == Type::Category::FixedBytes,
17951795
""
17961796
);
17971797
}

libsolidity/ast/Types.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,7 +1530,7 @@ BoolResult ArrayType::isImplicitlyConvertibleTo(Type const& _convertTo) const
15301530
if (_convertTo.category() != category())
15311531
return false;
15321532
auto& convertTo = dynamic_cast<ArrayType const&>(_convertTo);
1533-
if (convertTo.isByteArrayOrString() != isByteArrayOrString() || convertTo.isString() != isString())
1533+
if (convertTo.isByteArray() != isByteArray() || convertTo.isString() != isString())
15341534
return false;
15351535
// memory/calldata to storage can be converted, but only to a direct storage reference
15361536
if (convertTo.location() == DataLocation::Storage && location() != DataLocation::Storage && convertTo.isPointer())
@@ -1571,7 +1571,7 @@ BoolResult ArrayType::isExplicitlyConvertibleTo(Type const& _convertTo) const
15711571
return true;
15721572
// allow conversion bytes <-> string and bytes -> bytesNN
15731573
if (_convertTo.category() != category())
1574-
return isByteArrayOrString() && !isString() && _convertTo.category() == Type::Category::FixedBytes;
1574+
return isByteArray() && _convertTo.category() == Type::Category::FixedBytes;
15751575
auto& convertTo = dynamic_cast<ArrayType const&>(_convertTo);
15761576
if (convertTo.location() != location())
15771577
return false;
@@ -1608,7 +1608,7 @@ bool ArrayType::operator==(Type const& _other) const
16081608
ArrayType const& other = dynamic_cast<ArrayType const&>(_other);
16091609
if (
16101610
!ReferenceType::operator==(other) ||
1611-
other.isByteArrayOrString() != isByteArrayOrString() ||
1611+
other.isByteArray() != isByteArray() ||
16121612
other.isString() != isString() ||
16131613
other.isDynamicallySized() != isDynamicallySized()
16141614
)

libsolidity/ast/Types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,8 @@ class ArrayType: public ReferenceType
837837

838838
BoolResult validForLocation(DataLocation _loc) const override;
839839

840+
/// @returns true if this is a byte array.
841+
bool isByteArray() const { return m_arrayKind == ArrayKind::Bytes; }
840842
/// @returns true if this is a byte array or a string
841843
bool isByteArrayOrString() const { return m_arrayKind != ArrayKind::Ordinary; }
842844
/// @returns true if this is a string

libsolidity/codegen/CompilerUtils.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,7 @@ void CompilerUtils::convertType(
992992
if (_targetType.category() == Type::Category::FixedBytes)
993993
{
994994
solAssert(
995-
typeOnStack.isByteArrayOrString() && !typeOnStack.isString(),
995+
typeOnStack.isByteArray(),
996996
"Array types other than bytes not convertible to bytesNN."
997997
);
998998
solAssert(typeOnStack.isDynamicallySized());
@@ -1119,7 +1119,7 @@ void CompilerUtils::convertType(
11191119
if (_targetType.category() == Type::Category::FixedBytes)
11201120
{
11211121
solAssert(
1122-
typeOnStack.arrayType().isByteArrayOrString() && !typeOnStack.arrayType().isString(),
1122+
typeOnStack.arrayType().isByteArray(),
11231123
"Array types other than bytes not convertible to bytesNN."
11241124
);
11251125
solAssert(typeOnStack.isDynamicallySized());

libsolidity/codegen/YulUtilFunctions.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3216,7 +3216,7 @@ string YulUtilFunctions::conversionFunction(Type const& _from, Type const& _to)
32163216
auto const& fromType = dynamic_cast<ArraySliceType const&>(_from);
32173217
if (_to.category() == Type::Category::FixedBytes)
32183218
{
3219-
solAssert(fromType.arrayType().isByteArrayOrString(), "Array types other than bytes not convertible to bytesNN.");
3219+
solAssert(fromType.arrayType().isByteArray(), "Array types other than bytes not convertible to bytesNN.");
32203220
return bytesToFixedBytesConversionFunction(fromType.arrayType(), dynamic_cast<FixedBytesType const &>(_to));
32213221
}
32223222
solAssert(_to.category() == Type::Category::Array);
@@ -3256,7 +3256,7 @@ string YulUtilFunctions::conversionFunction(Type const& _from, Type const& _to)
32563256
auto const& fromArrayType = dynamic_cast<ArrayType const&>(_from);
32573257
if (_to.category() == Type::Category::FixedBytes)
32583258
{
3259-
solAssert(fromArrayType.isByteArrayOrString(), "Array types other than bytes not convertible to bytesNN.");
3259+
solAssert(fromArrayType.isByteArray(), "Array types other than bytes not convertible to bytesNN.");
32603260
return bytesToFixedBytesConversionFunction(fromArrayType, dynamic_cast<FixedBytesType const &>(_to));
32613261
}
32623262
solAssert(_to.category() == Type::Category::Array, "");
@@ -3460,7 +3460,7 @@ string YulUtilFunctions::conversionFunction(Type const& _from, Type const& _to)
34603460

34613461
string YulUtilFunctions::bytesToFixedBytesConversionFunction(ArrayType const& _from, FixedBytesType const& _to)
34623462
{
3463-
solAssert(_from.isByteArrayOrString() && !_from.isString(), "");
3463+
solAssert(_from.isByteArray(), "");
34643464
solAssert(_from.isDynamicallySized(), "");
34653465
string functionName = "convert_bytes_to_fixedbytes_from_" + _from.identifier() + "_to_" + _to.identifier();
34663466
return m_functionCollector.createFunction(functionName, [&](auto& _args, auto& _returnParams) {

libsolidity/formal/SymbolicTypes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ SortPointer smtSort(frontend::Type const& _type)
9696
auto sliceArrayType = dynamic_cast<ArraySliceType const*>(&_type);
9797
ArrayType const* arrayType = sliceArrayType ? &sliceArrayType->arrayType() : dynamic_cast<ArrayType const*>(&_type);
9898
if (
99-
(arrayType && (arrayType->isString() || arrayType->isByteArrayOrString())) ||
99+
(arrayType && arrayType->isByteArrayOrString()) ||
100100
_type.category() == frontend::Type::Category::StringLiteral
101101
)
102102
tupleName = "bytes";

0 commit comments

Comments
 (0)