diff --git a/test/libsolidity/semanticTests/array/concat/bytes_concat_different_types.sol b/test/libsolidity/semanticTests/array/concat/bytes_concat_different_types.sol index 060cf555c..aa9f83d42 100644 --- a/test/libsolidity/semanticTests/array/concat/bytes_concat_different_types.sol +++ b/test/libsolidity/semanticTests/array/concat/bytes_concat_different_types.sol @@ -24,9 +24,29 @@ contract C { function strParam(string calldata a) public returns (bytes memory) { return bytes.concat(bytes(a), "bcdef"); } + function fixedBytesParam(bytes16 b1, bytes15 b2, bytes31 b3) public returns ( + bytes memory, + bytes memory, + bytes memory, + bytes memory + ) { + return ( + bytes.concat(b1, b2), + bytes.concat(b1, b3), + bytes.concat(b1, "bcdef"), + bytes.concat(b1, s) + ); + } + function fixedBytesParam2(bytes calldata c, bytes6 b1, bytes6 b2) public returns (bytes memory, bytes memory) { + return ( + bytes.concat(s, b1, c), + bytes.concat(b1, c, b2) + ); + } } // ==== // compileViaYul: also +// revertStrings: debug // ---- // f(bytes): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 37, "abcdabcdabcdabcdabcdabcdabcdabcd", "bcdef" // g(bytes): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 66, "abcdabcdabcdabcdabcdabcdabcdabcd", "abcdefghabcdefghabcdefghabcdefgh", "ab" @@ -35,3 +55,20 @@ contract C { // k(bytes, string): 0x40, 0x80, 32, "abcdabcdabcdabcdabcdabcdabcdabcd", 5, "bcdef" -> 0x20, 37, "abcdabcdabcdabcdabcdabcdabcdabcd", "bcdef" // slice(bytes): 0x20, 4, "abcd" -> 0x20, 4, "abcd" // strParam(string): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 37, "abcdabcdabcdabcdabcdabcdabcdabcd", "bcdef" +// fixedBytesParam(bytes16, bytes15, bytes31): +// "aabbccddeeffgghh", +// "abcdefghabcdefg", +// "0123456789012345678901234567890" -> +// 0x80, 0xc0, 0x120, 0x160, +// 31, "aabbccddeeffgghhabcdefghabcdefg", +// 47, "aabbccddeeffgghh0123456789012345", "678901234567890", +// 21, "aabbccddeeffgghhbcdef", +// 21, "aabbccddeeffgghhbcdef" +// fixedBytesParam2(bytes, bytes6, bytes6): 0x60, left(0x010203040506), left(0x0708090A0B0C), 20, left(0x1011121314151617181920212223242526272829) -> +// 0x40, 0x80, +// 31, left(0x62636465660102030405061011121314151617181920212223242526272829), +// 32, 0x01020304050610111213141516171819202122232425262728290708090A0B0C +// fixedBytesParam2(bytes, bytes6, bytes6): 0x60, left(0x01), left(0x02), 5, left(0x03) -> +// 0x40, 0x80, +// 16, left(0x6263646566010000000000030000000000), +// 17, left(0x010000000000030000000002000000000000) \ No newline at end of file