mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Solidity
		
	
	
	
	
	
contract test {
 | 
						|
    function f() pure public returns (uint) {
 | 
						|
        uint x = 7;
 | 
						|
        {
 | 
						|
            x = 3; // This should still assign to the outer variable
 | 
						|
            uint x;
 | 
						|
            x = 4; // This should assign to the new one
 | 
						|
        }
 | 
						|
        return x;
 | 
						|
    }
 | 
						|
    function g() pure public returns (uint x) {
 | 
						|
        x = 7;
 | 
						|
        {
 | 
						|
            x = 3;
 | 
						|
            uint x;
 | 
						|
            return x; // This returns the new variable, i.e. 0
 | 
						|
        }
 | 
						|
    }
 | 
						|
    function h() pure public returns (uint x, uint a, uint b) {
 | 
						|
        x = 7;
 | 
						|
        {
 | 
						|
            x = 3;
 | 
						|
            a = x; // This should read from the outer
 | 
						|
            uint x = 4;
 | 
						|
            b = x;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    function i() pure public returns (uint x, uint a) {
 | 
						|
        x = 7;
 | 
						|
        {
 | 
						|
            x = 3;
 | 
						|
            uint x = x; // This should read from the outer and assign to the inner
 | 
						|
            a = x;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
// ====
 | 
						|
// compileViaYul: also
 | 
						|
// compileToEwasm: also
 | 
						|
// ----
 | 
						|
// f() -> 3
 | 
						|
// g() -> 0
 | 
						|
// h() -> 3, 3, 4
 | 
						|
// i() -> 3, 3
 |