solang
solang copied to clipboard
Type checking error in Yul assignment statements
An error occurs when assigning a uint8 type (which is actually uint256) to a bytes32 type in Yul assembly, causing the assert for type length to fail.
Compile: solang compile a.sol --target solana
Code:
contract Test {
function test() external returns(bytes32 result) {
uint8 st = 127;
assembly { result := st }
}
}
Output:
warning: function can be declared 'pure'
┌─ ~/xxx/a.sol:2:3
│
2 │ function test() external returns(bytes32 result) {
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
thread 'main' panicked at src/emit/expression.rs:2212:13:
assertion `left == right` failed
left: 1
right: 32
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Version: solang version v0.3.3-56-g08dbe495