Skip to content

Commit 5d6f8a7

Browse files
committed
Add test to exercise create2
1 parent 383c708 commit 5d6f8a7

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

integration/stylus/milestone_2.sol

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ contract C {
6262

6363
greeter.greet();
6464
}
65+
66+
function test4() public payable {
67+
print("address = {}".format(address(this)));
68+
69+
Greeter greeter0 = new Greeter{salt: 0}();
70+
print("greeter0 = {}".format(address(greeter0)));
71+
greeter0.greet();
72+
73+
Greeter greeter1 = new Greeter{salt: bytes32(uint256(1))}();
74+
print("greeter1 = {}".format(address(greeter1)));
75+
greeter1.greet();
76+
}
6577
}
6678

6779
contract Greeter {

src/emit/stylus/target.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use crate::emit::{expression::expression, ContractArgs, TargetRuntime, Variable}
1212
use crate::emit_context;
1313
use crate::sema::ast::{self, CallTy};
1414
use crate::sema::ast::{Function, Type};
15+
use ethers_core::utils::keccak256;
1516
use inkwell::types::{BasicTypeEnum, IntType};
1617
use inkwell::values::{
1718
ArrayValue, BasicMetadataValueEnum, BasicValue, BasicValueEnum, FunctionValue, IntValue,
@@ -684,6 +685,11 @@ impl<'a> TargetRuntime<'a> for StylusTarget {
684685

685686
let code = super::cargo_stylus::contract_deployment_calldata(&code_without_metadata);
686687

688+
if std::env::var_os("DEBUG_CREATE2").is_some() {
689+
let digest = keccak256(&code);
690+
eprintln!("keccak256(initCode) = {}", hex::encode(digest));
691+
}
692+
687693
let code_ptr =
688694
bin.emit_global_string(&format!("binary_{}_code", created_contract.id), &code, true);
689695

tests/stylus_tests/milestone_2.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ fn milestone_2() {
4040

4141
stdout = send(dir, &address, ["test3()", "--value=1000000000000000000"]).unwrap();
4242
println!("{}", stdout);
43+
44+
stdout = send(dir, &address, ["test4()", "--value=1000000000000000000"]).unwrap();
45+
println!("{}", stdout);
4346
}
4447

4548
fn label_test_output(stdout: &str) -> String {

0 commit comments

Comments
 (0)