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
10
tolk/ast.h
10
tolk/ast.h
|
@ -529,8 +529,14 @@ private:
|
|||
|
||||
public:
|
||||
|
||||
typedef const FunctionData* DotTarget; // for `t.tupleAt` target is `tupleAt` global function
|
||||
DotTarget target = nullptr; // filled at type inferring
|
||||
typedef std::variant<
|
||||
const FunctionData*, // for `t.tupleAt` target is `tupleAt` global function
|
||||
int // for `t.0` target is "indexed access" 0
|
||||
> DotTarget;
|
||||
DotTarget target = static_cast<FunctionData*>(nullptr); // filled at type inferring
|
||||
|
||||
bool is_target_fun_ref() const { return std::holds_alternative<const FunctionData*>(target); }
|
||||
bool is_target_indexed_access() const { return std::holds_alternative<int>(target); }
|
||||
|
||||
AnyExprV get_obj() const { return child; }
|
||||
auto get_identifier() const { return identifier; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue