mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	Lots of changes, actually. Most noticeable are: - traditional //comments - #include -> import - a rule "import what you use" - ~ found -> !found (for -1/0) - null() -> null - is_null?(v) -> v == null - throw is a keyword - catch with swapped arguments - throw_if, throw_unless -> assert - do until -> do while - elseif -> else if - drop ifnot, elseifnot - drop rarely used operators A testing framework also appears here. All tests existed earlier, but due to significant syntax changes, their history is useless.
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1,015 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1,015 B
		
	
	
	
		
			Text
		
	
	
	
	
	
fun lshift(): int {
 | 
						|
    return (1 << 0) == 1;
 | 
						|
}
 | 
						|
 | 
						|
fun rshift(): int {
 | 
						|
    return (1 >> 0) == 1;
 | 
						|
}
 | 
						|
 | 
						|
fun lshift_var(i: int): int {
 | 
						|
    return (1 << i) == 1;
 | 
						|
}
 | 
						|
 | 
						|
fun rshift_var(i: int): int {
 | 
						|
    return (1 >> i) == 1;
 | 
						|
}
 | 
						|
 | 
						|
fun main(x: int): int {
 | 
						|
    if (x == 0) {
 | 
						|
        return lshift();
 | 
						|
    } else if (x == 1) {
 | 
						|
        return rshift();
 | 
						|
    } else if (x == 2) {
 | 
						|
        return lshift_var(0);
 | 
						|
    } else if (x == 3) {
 | 
						|
        return rshift_var(0);
 | 
						|
    } else if (x == 4) {
 | 
						|
        return lshift_var(1);
 | 
						|
    } else {
 | 
						|
        return rshift_var(1);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
@method_id(11)
 | 
						|
fun is_claimed(index: int): int {
 | 
						|
    var claim_bit_index: int = index % 256;
 | 
						|
    var mask: int = 1 << claim_bit_index;
 | 
						|
    return (255 & mask) == mask;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
    method_id | in  | out
 | 
						|
@testcase | 0  | 0   | -1
 | 
						|
@testcase | 0  | 1   | -1
 | 
						|
@testcase | 0  | 2   | -1
 | 
						|
@testcase | 0  | 3   | -1
 | 
						|
@testcase | 0  | 4   |  0
 | 
						|
@testcase | 0  | 5   |  0
 | 
						|
@testcase | 11 | 0   | -1
 | 
						|
@testcase | 11 | 1   | -1
 | 
						|
@testcase | 11 | 256 | -1
 | 
						|
@testcase | 11 | 8   |  0
 | 
						|
*/
 |