mirror of
https://github.com/ton-blockchain/ton
synced 2025-02-12 19:22:37 +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.
66 lines
1.1 KiB
Text
66 lines
1.1 KiB
Text
@method_id(101)
|
|
fun test1(x: int): int {
|
|
if (x > 200) {
|
|
return 200;
|
|
} else if (x > 100) {
|
|
return 100;
|
|
} else if (!(x <= 50)) {
|
|
if (!(x > 90)) {
|
|
return x;
|
|
} else {
|
|
return 90;
|
|
}
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
@method_id(102)
|
|
fun test2(x: int) {
|
|
if (x == 20) { return 20; }
|
|
if (x != 50) { return 50; }
|
|
if (x == 0) { return 0; }
|
|
return -1;
|
|
}
|
|
|
|
@method_id(103)
|
|
fun test3(x: int) {
|
|
if (!(x != 20)) { return 20; }
|
|
if (!(x == 50)) { return 50; }
|
|
if (!x) { return 0; }
|
|
return -1;
|
|
}
|
|
|
|
fun main() {
|
|
|
|
}
|
|
|
|
/**
|
|
@testcase | 101 | 0 | 0
|
|
@testcase | 101 | 1000 | 200
|
|
@testcase | 101 | 150 | 100
|
|
@testcase | 101 | -1 | 0
|
|
@testcase | 101 | 87 | 87
|
|
@testcase | 101 | 94 | 90
|
|
@testcase | 102 | 20 | 20
|
|
@testcase | 102 | 40 | 50
|
|
@testcase | 102 | 50 | -1
|
|
@testcase | 103 | 20 | 20
|
|
@testcase | 103 | 40 | 50
|
|
@testcase | 103 | 50 | -1
|
|
|
|
@fif_codegen
|
|
"""
|
|
test3 PROC:<{
|
|
// x
|
|
DUP // x x
|
|
20 NEQINT // x _2
|
|
IFNOTJMP:<{ // x
|
|
DROP //
|
|
20 PUSHINT // _3=20
|
|
}> // x
|
|
DUP // x x
|
|
50 EQINT // x _5
|
|
IFNOTJMP:<{ // x
|
|
"""
|
|
*/
|