mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
[Tolk] Support syntax tensorVar.0
and tupleVar.0
It works both for reading and writing: > var t = (1, 2); > t.0; // 1 > t.0 = 5; > t; // (5, 2) It also works for typed/untyped tuples, producing INDEX and SETINDEX. Global tensors and tuples works. Nesting `t.0.1.2` works. `mutate` works. Even mixing tuples inside tensors inside a global for writing works.
This commit is contained in:
parent
565bc59735
commit
7a1602f591
42 changed files with 1119 additions and 338 deletions
|
@ -21,23 +21,32 @@ fun tuplePush<T>(mutate self: tuple, value: T): void
|
|||
asm "TPUSH";
|
||||
|
||||
/// Returns the first element of a non-empty tuple.
|
||||
/// `t.0` is actually the same as `t.tupleFirst()`
|
||||
@pure
|
||||
fun tupleFirst<T>(t: tuple): T
|
||||
fun tupleFirst<T>(self: tuple): T
|
||||
asm "FIRST";
|
||||
|
||||
/// Returns the [`index`]-th element of a tuple.
|
||||
/// `t.i` is actually the same as `t.tupleAt(i)`
|
||||
@pure
|
||||
fun tupleAt<T>(t: tuple, index: int): T
|
||||
fun tupleAt<T>(self: tuple, index: int): T
|
||||
builtin;
|
||||
|
||||
/// Sets the [`index`]-th element of a tuple to a specified value
|
||||
/// (element with this index must already exist, a new element isn't created).
|
||||
/// `t.i = value` is actually the same as `t.tupleSetAt(value, i)`
|
||||
@pure
|
||||
fun tupleSetAt<T>(mutate self: tuple, value: T, index: int): void
|
||||
builtin;
|
||||
|
||||
/// Returns the size of a tuple (elements count in it).
|
||||
@pure
|
||||
fun tupleSize(t: tuple): int
|
||||
fun tupleSize(self: tuple): int
|
||||
asm "TLEN";
|
||||
|
||||
/// Returns the last element of a non-empty tuple.
|
||||
@pure
|
||||
fun tupleLast<T>(t: tuple): T
|
||||
fun tupleLast<T>(self: tuple): T
|
||||
asm "LAST";
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue