mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			26 lines
		
	
	
		
			885 B
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			885 B
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| pragma abicoder               v2;
 | |
| 
 | |
| 
 | |
| contract C {
 | |
|     struct S {
 | |
|         uint8 a;
 | |
|         bytes1 b;
 | |
|     }
 | |
| 
 | |
|     function f(S calldata s) external pure returns (uint256 a, bytes32 b) {
 | |
|         uint8 tmp1 = s.a;
 | |
|         bytes1 tmp2 = s.b;
 | |
|         assembly {
 | |
|             a := tmp1
 | |
|             b := tmp2
 | |
|         }
 | |
|     }
 | |
| }
 | |
| // ====
 | |
| // compileToEwasm: also
 | |
| // compileViaYul: also
 | |
| // ----
 | |
| // f((uint8,bytes1)): 0x12, hex"3400000000000000000000000000000000000000000000000000000000000000" -> 0x12, hex"3400000000000000000000000000000000000000000000000000000000000000" # double check that the valid case goes through #
 | |
| // f((uint8,bytes1)): 0x1234, hex"5678000000000000000000000000000000000000000000000000000000000000" -> FAILURE
 | |
| // f((uint8,bytes1)): 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -> FAILURE
 |