-
Notifications
You must be signed in to change notification settings - Fork 109
Open
Description
pragma solidity ^0.8.0;
contract Events {
uint256 public number;
event Log(uint256 sender, uint256 message);
function getNumber() public view returns (uint256) {
return number;
}
function setAto1() public returns (uint256) {
number = 1;
return number;
}
function setAto2() public returns (uint256) {
number = 2;
return number;
}
function userMain() public {
emit Log(setAto1(), setAto2());
}
}
#![cfg_attr(not(any(test, feature = "export-abi")), no_main)]
#![cfg_attr(not(any(test, feature = "export-abi")), no_std)]
#[macro_use]
extern crate alloc;
use alloc::vec::Vec;
use alloy_sol_types::sol;
// use stylus_sdk::evm::log;
use alloy_sol_types::SolEvent;
/// Import items from the SDK. The prelude contains common traits and macros.
use stylus_sdk::{alloy_primitives::*, prelude::*,evm};
sol! {
event Log(uint256 sender, uint256 message);
event AnotherLog();
}
sol_storage! {
#[entrypoint]
pub struct Events {
uint256 number;
}
}
#[public]
impl Events {
pub fn number(&self) -> U256 {
self.number.get()
}
fn set_a_to_1(&mut self) -> U256 {
self.number.set(U256::from(1));
self.number
}
fn set_a_to_2(&mut self) -> U256 {
self.number.set(U256::from(2));
self.number
}
fn user_main(&mut self) {
evm::log(Log {sender: self.set_a_to_1(), message: self.set_a_to_2()});
}
}
The Solidity code can be compiled and executed normally, but the Rust code will fail to compile with an error.
error[E0308]: mismatched types
--> src/lib.rs:41:9
|
39 | fn set_a_to_2(&mut self) -> U256 {
| ---- expected `alloy_primitives::Uint<256, 4>` because of return type
40 | self.number.set(U256::from(2));
41 | self.number
| ^^^^^^^^^^^ expected `Uint<256, 4>`, found `StorageUint<256, 4>`
|
Metadata
Metadata
Assignees
Labels
No labels