mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'origin/develop' into breaking
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
contract A {
|
||||
uint public x = 2;
|
||||
constructor(uint) {}
|
||||
function f() public returns(uint) { x = 4; }
|
||||
}
|
||||
contract B is A {
|
||||
constructor() A(f()) {}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: false
|
||||
// ----
|
||||
// x() -> 4
|
||||
@@ -0,0 +1,12 @@
|
||||
contract A {
|
||||
uint public x = 2;
|
||||
constructor(uint) {}
|
||||
function f() public returns(uint) { x = 4; }
|
||||
}
|
||||
contract B is A {
|
||||
constructor() A(f()) {}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: true
|
||||
// ----
|
||||
// x() -> 2
|
||||
@@ -0,0 +1,14 @@
|
||||
contract C {
|
||||
function f(string memory a, string memory b) public returns (string memory) {
|
||||
return string.concat(a, b);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(string,string): 0x40, 0x80, 32, "abcdabcdabcdabcdabcdabcdabcdabcd", 5, "bcdef" -> 0x20, 0x25, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928904312298000709931354278973409164155382318144318241583783949107200
|
||||
// f(string,string): 0x40, 0xa0, 64, "abcdabcdabcdabcdabcdabcdabcdabcd", "abcdabcdabcdabcdabcdabcdabcdabcd", 5, "bcdef" -> 0x20, 0x45, 0x6162636461626364616263646162636461626364616263646162636461626364, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928904312298000709931354278973409164155382318144318241583783949107200
|
||||
// f(string,string): 0x40, 0x80, 3, "abc", 3, "def" -> 0x20, 6, "abcdef"
|
||||
// f(string,string): 0x40, 0xa0, 34, "abcdabcdabcdabcdabcdabcdabcdabcd", "ab", 30, "cdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 0x40, 0x6162636461626364616263646162636461626364616263646162636461626364, 0x6162636461626364616263646162636461626364616263646162636461626364
|
||||
// f(string,string): 0x40, 0xa0, 34, "abcdabcdabcdabcdabcdabcdabcdabcd", "ab", 34, "cdabcdabcdabcdabcdabcdabcdabcdab", "cd" -> 0x20, 0x44, 0x6162636461626364616263646162636461626364616263646162636461626364, 0x6162636461626364616263646162636461626364616263646162636461626364, 44048183293808120317390542201052832727062033572611867748297851798484192067584
|
||||
// f(string,string): 0x40, 0x80, 3, "abc", 30, "dabcdabcdabcdabcdabcdabcdabcda" -> 0x20, 0x21, 0x6162636461626364616263646162636461626364616263646162636461626364, 43874346312576839672212443538448152585028080127215369968075725190498334277632
|
||||
@@ -0,0 +1,37 @@
|
||||
contract C{
|
||||
string s = "bcdef";
|
||||
|
||||
function f(string memory a) public returns (string memory) {
|
||||
return string.concat(a, "bcdef");
|
||||
}
|
||||
function g(string calldata a) public returns (string memory) {
|
||||
return string.concat(a, "abcdefghabcdefghabcdefghabcdefghab");
|
||||
}
|
||||
function h(string calldata a) public returns (string memory) {
|
||||
return string.concat(a, s);
|
||||
}
|
||||
function j(string calldata a) public returns (string memory) {
|
||||
string storage ref = s;
|
||||
return string.concat(a, ref, s);
|
||||
}
|
||||
function k(string calldata a, bytes memory b) public returns (string memory) {
|
||||
return string.concat(a, string(b));
|
||||
}
|
||||
function slice(string calldata a) public returns (string memory) {
|
||||
require(bytes(a).length > 2, "");
|
||||
return string.concat(a[:2], a[2:]);
|
||||
}
|
||||
function strParam(bytes calldata a) public returns (string memory) {
|
||||
return string.concat(string(a), "bcdef");
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(string): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 0x25, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928904312298000709931354278973409164155382318144318241583783949107200
|
||||
// g(string): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 0x42, 0x6162636461626364616263646162636461626364616263646162636461626364, 0x6162636465666768616263646566676861626364656667686162636465666768, 44047497324925121336511606693520958599579173549109180625971642598225011015680
|
||||
// h(string): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 0x25, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928904312298000709931354278973409164155382318144318241583783949107200
|
||||
// j(string): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 0x2a, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928944786876717917111204727192787026596791669343131645116682757734400
|
||||
// k(string,bytes): 0x40, 0x80, 32, "abcdabcdabcdabcdabcdabcdabcdabcd", 5, "bcdef" -> 0x20, 0x25, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928904312298000709931354278973409164155382318144318241583783949107200
|
||||
// slice(string): 0x20, 4, "abcd" -> 0x20, 4, "abcd"
|
||||
// strParam(bytes): 0x20, 32, "abcdabcdabcdabcdabcdabcdabcdabcd" -> 0x20, 0x25, 0x6162636461626364616263646162636461626364616263646162636461626364, 44502269928904312298000709931354278973409164155382318144318241583783949107200
|
||||
@@ -0,0 +1,10 @@
|
||||
contract C {
|
||||
function f() public returns (string memory) {
|
||||
return string.concat();
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileToEwasm: also
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 0x20, 0
|
||||
@@ -0,0 +1,27 @@
|
||||
contract C {
|
||||
function f() public returns (string memory) {
|
||||
string memory b = "";
|
||||
return string.concat(
|
||||
string.concat(b),
|
||||
string.concat(b, b),
|
||||
string.concat("", b),
|
||||
string.concat(b, "")
|
||||
);
|
||||
}
|
||||
|
||||
function g() public returns (string memory) {
|
||||
return string.concat("", "abc", hex"", "abc", unicode"");
|
||||
}
|
||||
|
||||
function h() public returns (string memory) {
|
||||
string memory b = "";
|
||||
return string.concat(b, "abc", b, "abc", b);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileToEwasm: also
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 0x20, 0
|
||||
// g() -> 0x20, 6, "abcabc"
|
||||
// h() -> 0x20, 6, "abcabc"
|
||||
@@ -0,0 +1,9 @@
|
||||
contract C {
|
||||
function f(string memory a, string memory b, string memory c) public returns (string memory) {
|
||||
return string.concat(string.concat(a, b), c);
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f(string,string,string): 0x60, 0x60, 0x60, 2, "ab" -> 0x20, 6, "ababab"
|
||||
Reference in New Issue
Block a user