Skip to content

Commit

Permalink
feat(stdlib): add SendDefaultMode constant (#1010)
Browse files Browse the repository at this point in the history
  • Loading branch information
jubnzv authored Oct 31, 2024
1 parent b571ec1 commit 1b05601
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 29 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Ability to specify a compile-time method ID expression for getters: PR [#922](https://github.com/tact-lang/tact/pull/922) and PR [#932](https://github.com/tact-lang/tact/pull/932)
- Destructuring of structs and messages: PR [#856](https://github.com/tact-lang/tact/pull/856)
- Docs: automatic links to Web IDE from all code blocks: PR [#994](https://github.com/tact-lang/tact/pull/994)
- The `SendDefaultMode` send mode constant to the standard library: PR [#1010](https://github.com/tact-lang/tact/pull/1010)
- Docs: initial semi-automated Chinese translation of the documentation: PR [#942](https://github.com/tact-lang/tact/pull/942)
- The `replace` and `replaceGet` methods for the `Map` type: PR [#941](https://github.com/tact-lang/tact/pull/941)

Expand Down
2 changes: 1 addition & 1 deletion docs/grammars/grammar-tact.json
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@
},
{
"comment": "Other constants from the core library",
"match": "(?<!\\.)\\b(SendRemainingValue|SendRemainingBalance|SendPayGasSeparately|SendIgnoreErrors|SendBounceIfActionFail|SendDestroyIfZero|SendOnlyEstimateFee|ReserveExact|ReserveAllExcept|ReserveAtMost|ReserveAddOriginalBalance|ReserveInvertSign|ReserveBounceIfActionFail)\\b",
"match": "(?<!\\.)\\b(SendDefaultMode|SendRemainingValue|SendRemainingBalance|SendPayGasSeparately|SendIgnoreErrors|SendBounceIfActionFail|SendDestroyIfZero|SendOnlyEstimateFee|ReserveExact|ReserveAllExcept|ReserveAtMost|ReserveAddOriginalBalance|ReserveInvertSign|ReserveBounceIfActionFail)\\b",
"name": "constant.other.builtin.tact"
},
{
Expand Down
3 changes: 2 additions & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@
"typescript": "^5.6.2",
"unist-util-visit": "^5.0.0"
},
"packageManager": "[email protected]"
"packageManager": "[email protected]",
"version": ""
}
4 changes: 3 additions & 1 deletion docs/src/content/docs/book/message-mode.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Message mode
description: "Messages are sent with the mode param of a struct SendParameters. It's an Int value, which is combined from base modes and optional flags, which are also Int values"
---

import { Badge } from '@astrojs/starlight/components';

As it was previously mentioned, messages are sent with the `mode` param of a struct `SendParameters{:tact}`. It's an [`Int{:tact}`][int] value, which is combined from base modes and optional flags, which are also [`Int{:tact}`][int] values.

It's possible to use raw [`Int{:tact}`][int] values and manually provide them for the `mode`, but for your convenience there's a set of constants which you may use to construct the compound `mode` with ease. Take a look at the following tables for more information on base modes and optional flags.
Expand All @@ -11,7 +13,7 @@ It's possible to use raw [`Int{:tact}`][int] values and manually provide them fo

Mode value | Constant name | Description
---------: | :---------------------------- | -----------
$0$ | - | Ordinary message (default).
$0$ | <Badge text="Since Tact 1.6" variant="tip"/> `SendDefaultMode{:tact}` | Ordinary message (default).
$64$ | `SendRemainingValue{:tact}` | Carry all the remaining value of the inbound message in addition to the value initially indicated in the new message.
$128$ | `SendRemainingBalance{:tact}` | Carry all the remaining balance of the current smart contract instead of the value originally indicated in the message.

Expand Down
53 changes: 27 additions & 26 deletions src/imports/stdlib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -278,32 +278,33 @@ files['std/reserve.tact'] =
files['std/send.tact'] =
'YXNtIGZ1biBuYXRpdmVTZW5kTWVzc2FnZShjZWxsOiBDZWxsLCBtb2RlOiBJbnQpIHsgU0VORFJBV01TRyB9Cgphc20gZnVuIG5hdGl2ZVNlbmRNZXNzYWdlUmV0dXJu' +
'Rm9yd2FyZEZlZShtc2c6IENlbGwsIG1vZGU6IEludCk6IEludCB7IFNFTkRNU0cgfQoKY29uc3QgU2VuZFJlbWFpbmluZ0JhbGFuY2U6IEludCA9IDEyODsKY29uc3Qg' +
'U2VuZFJlbWFpbmluZ1ZhbHVlOiBJbnQgPSA2NDsKY29uc3QgU2VuZElnbm9yZUVycm9yczogSW50ID0gMjsKY29uc3QgU2VuZFBheUdhc1NlcGFyYXRlbHk6IEludCA9' +
'IDE7CmNvbnN0IFNlbmREZXN0cm95SWZaZXJvOiBJbnQgPSAzMjsKY29uc3QgU2VuZEJvdW5jZUlmQWN0aW9uRmFpbDogSW50ID0gMTY7CmNvbnN0IFNlbmRPbmx5RXN0' +
'aW1hdGVGZWU6IEludCA9IDEwMjQ7CgpzdHJ1Y3QgU2VuZFBhcmFtZXRlcnMgewogICAgYm91bmNlOiBCb29sID0gdHJ1ZTsKICAgIHRvOiBBZGRyZXNzOwogICAgdmFs' +
'dWU6IEludDsKICAgIG1vZGU6IEludCA9IDA7CiAgICBib2R5OiBDZWxsPyA9IG51bGw7CiAgICBjb2RlOiBDZWxsPyA9IG51bGw7CiAgICBkYXRhOiBDZWxsPyA9IG51' +
'bGw7Cn0KCmZ1biBzZW5kKHBhcmFtczogU2VuZFBhcmFtZXRlcnMpOiBJbnQgeyAvLyByZXR1cm5zIGZvcndhcmQgZmVlCiAgICBsZXQgYjogQnVpbGRlciA9IGJlZ2lu' +
'Q2VsbCgpOwogICAgYiA9IGIuc3RvcmVJbnQoMSwgMik7IC8vIGludGVybmFsX21lc3NhZ2UgKyBpaGRfZGlzYWJsZWQKICAgIGIgPSBiLnN0b3JlQm9vbChwYXJhbXMu' +
'Ym91bmNlKTsgLy8gYm91bmNlCiAgICBiID0gYi5zdG9yZUludCgwLCAzKTsgLy8gYm91bmNlZCArIGZyb20KICAgIGIgPSBiLnN0b3JlQWRkcmVzcyhwYXJhbXMudG8p' +
'OyAvLyBUbwogICAgYiA9IGIuc3RvcmVDb2lucyhwYXJhbXMudmFsdWUpOyAvLyBWYWx1ZQogICAgYiA9IGIuc3RvcmVJbnQoMCwgMSArIDQgKyA0ICsgNjQgKyAzMik7' +
'IC8vIGN1cnJlbmN5X2NvbGxlY3Rpb24gKyBJSFIgZmVlcyArIEZ3ZCBmZWVzICsgQ3JlYXRlZExUICsgQ3JlYXRlZEF0CgogICAgLy8gU3RhdGVpbml0CiAgICBpZiAo' +
'cGFyYW1zLmNvZGUgIT0gbnVsbCB8fCBwYXJhbXMuZGF0YSAhPSBudWxsKSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKHRydWUpOyAvLyBTdGF0ZSBpbml0CgogICAg' +
'ICAgIC8vIEFzc2VtYmxlIHN0YXRlIGluaXQgY2VsbAogICAgICAgIGxldCBiYzogQnVpbGRlciA9IGJlZ2luQ2VsbCgpOwogICAgICAgIGJjID0gYmMuc3RvcmVCb29s' +
'KGZhbHNlKTsgLy8gU3BsaXREZXB0aAogICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gVGlja1RvY2sKICAgICAgICBpZiAocGFyYW1zLmNvZGUgIT0g' +
'bnVsbCkgewogICAgICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbCh0cnVlKTsgLy8gQ29kZSBwcmVzZW5jZQogICAgICAgICAgICBiYyA9IGJjLnN0b3JlUmVmKHBhcmFt' +
'cy5jb2RlISEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gQ29kZSBwcmVzZW5jZQogICAgICAgIH0KICAg' +
'ICAgICBpZiAocGFyYW1zLmRhdGEgIT0gbnVsbCkgewogICAgICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbCh0cnVlKTsgLy8gRGF0YSBwcmVzZW5jZQogICAgICAgICAg' +
'ICBiYyA9IGJjLnN0b3JlUmVmKHBhcmFtcy5kYXRhISEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gRGF0' +
'YSBwcmVzZW5jZQogICAgICAgIH0KICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbChmYWxzZSk7IC8vIExpYnJhcnkKCiAgICAgICAgYiA9IGIuc3RvcmVCb29sKHRydWUp' +
'OyAvLyBTdG9yZSBhcyByZWYKICAgICAgICBiID0gYi5zdG9yZVJlZihiYy5lbmRDZWxsKCkpOwogICAgfSBlbHNlIHsKICAgICAgICBiID0gYi5zdG9yZUJvb2woZmFs' +
'c2UpOyAvLyBObyBzdGF0ZSBpbml0CiAgICB9CgogICAgLy8gQm9keQogICAgbGV0IGJvZHk6IENlbGw/ID0gcGFyYW1zLmJvZHk7CiAgICBpZiAoYm9keSAhPSBudWxs' +
'KSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKHRydWUpOwogICAgICAgIGIgPSBiLnN0b3JlUmVmKGJvZHkhISk7CiAgICB9IGVsc2UgewogICAgICAgIGIgPSBiLnN0' +
'b3JlQm9vbChmYWxzZSk7IC8vIE5vIGJvZHkKICAgIH0KCiAgICAvLyBTZW5kCiAgICBsZXQgYzogQ2VsbCA9IGIuZW5kQ2VsbCgpOwogICAgcmV0dXJuIG5hdGl2ZVNl' +
'bmRNZXNzYWdlUmV0dXJuRm9yd2FyZEZlZShjLCBwYXJhbXMubW9kZSk7Cn0KCmlubGluZSBmdW4gZW1pdChib2R5OiBDZWxsKSB7CiAgICAvLyBleHRfb3V0X21zZ19p' +
'bmZvJDExIHNyYzpNc2dBZGRyZXNzSW50IGRlc3Q6TXNnQWRkcmVzc0V4dCBjcmVhdGVkX2x0OnVpbnQ2NCBjcmVhdGVkX2F0OnVpbnQzMgogICAgLy8gICAgICAgICAg' +
'ICAgICAgICAgICBtYXliZTogc3RhdGVJbml0IChmYWxzZSkgYm9keVJlZjogYm9vbCAodHJ1ZSkKICAgIGxldCBjOiBDZWxsID0gYmVnaW5DZWxsKCkKICAgICAgICAu' +
'c3RvcmVVaW50KDE1MjExODA3MjAyNzM4NzUyODE3OTYwNDM4NDY0NTEzLCAxMDQpCiAgICAgICAgLnN0b3JlUmVmKGJvZHkpCiAgICAgICAgLmVuZENlbGwoKTsKICAg' +
'IG5hdGl2ZVNlbmRNZXNzYWdlKGMsIDApOwp9Cgphc20gZnVuIGFjY2VwdE1lc3NhZ2UoKSB7IEFDQ0VQVCB9Cgphc20gZnVuIGNvbW1pdCgpIHsgQ09NTUlUIH0K';
'U2VuZFJlbWFpbmluZ1ZhbHVlOiBJbnQgPSA2NDsKY29uc3QgU2VuZERlZmF1bHRNb2RlOiBJbnQgPSAwOwpjb25zdCBTZW5kSWdub3JlRXJyb3JzOiBJbnQgPSAyOwpj' +
'b25zdCBTZW5kUGF5R2FzU2VwYXJhdGVseTogSW50ID0gMTsKY29uc3QgU2VuZERlc3Ryb3lJZlplcm86IEludCA9IDMyOwpjb25zdCBTZW5kQm91bmNlSWZBY3Rpb25G' +
'YWlsOiBJbnQgPSAxNjsKY29uc3QgU2VuZE9ubHlFc3RpbWF0ZUZlZTogSW50ID0gMTAyNDsKCnN0cnVjdCBTZW5kUGFyYW1ldGVycyB7CiAgICBib3VuY2U6IEJvb2wg' +
'PSB0cnVlOwogICAgdG86IEFkZHJlc3M7CiAgICB2YWx1ZTogSW50OwogICAgbW9kZTogSW50ID0gMDsKICAgIGJvZHk6IENlbGw/ID0gbnVsbDsKICAgIGNvZGU6IENl' +
'bGw/ID0gbnVsbDsKICAgIGRhdGE6IENlbGw/ID0gbnVsbDsKfQoKZnVuIHNlbmQocGFyYW1zOiBTZW5kUGFyYW1ldGVycyk6IEludCB7IC8vIHJldHVybnMgZm9yd2Fy' +
'ZCBmZWUKICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7CiAgICBiID0gYi5zdG9yZUludCgxLCAyKTsgLy8gaW50ZXJuYWxfbWVzc2FnZSArIGloZF9kaXNh' +
'YmxlZAogICAgYiA9IGIuc3RvcmVCb29sKHBhcmFtcy5ib3VuY2UpOyAvLyBib3VuY2UKICAgIGIgPSBiLnN0b3JlSW50KDAsIDMpOyAvLyBib3VuY2VkICsgZnJvbQog' +
'ICAgYiA9IGIuc3RvcmVBZGRyZXNzKHBhcmFtcy50byk7IC8vIFRvCiAgICBiID0gYi5zdG9yZUNvaW5zKHBhcmFtcy52YWx1ZSk7IC8vIFZhbHVlCiAgICBiID0gYi5z' +
'dG9yZUludCgwLCAxICsgNCArIDQgKyA2NCArIDMyKTsgLy8gY3VycmVuY3lfY29sbGVjdGlvbiArIElIUiBmZWVzICsgRndkIGZlZXMgKyBDcmVhdGVkTFQgKyBDcmVh' +
'dGVkQXQKCiAgICAvLyBTdGF0ZWluaXQKICAgIGlmIChwYXJhbXMuY29kZSAhPSBudWxsIHx8IHBhcmFtcy5kYXRhICE9IG51bGwpIHsKICAgICAgICBiID0gYi5zdG9y' +
'ZUJvb2wodHJ1ZSk7IC8vIFN0YXRlIGluaXQKCiAgICAgICAgLy8gQXNzZW1ibGUgc3RhdGUgaW5pdCBjZWxsCiAgICAgICAgbGV0IGJjOiBCdWlsZGVyID0gYmVnaW5D' +
'ZWxsKCk7CiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBTcGxpdERlcHRoCiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBUaWNr' +
'VG9jawogICAgICAgIGlmIChwYXJhbXMuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKHRydWUpOyAvLyBDb2RlIHByZXNlbmNlCiAg' +
'ICAgICAgICAgIGJjID0gYmMuc3RvcmVSZWYocGFyYW1zLmNvZGUhISk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2Up' +
'OyAvLyBDb2RlIHByZXNlbmNlCiAgICAgICAgfQogICAgICAgIGlmIChwYXJhbXMuZGF0YSAhPSBudWxsKSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKHRy' +
'dWUpOyAvLyBEYXRhIHByZXNlbmNlCiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVSZWYocGFyYW1zLmRhdGEhISk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg' +
'YmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBEYXRhIHByZXNlbmNlCiAgICAgICAgfQogICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gTGlicmFy' +
'eQoKICAgICAgICBiID0gYi5zdG9yZUJvb2wodHJ1ZSk7IC8vIFN0b3JlIGFzIHJlZgogICAgICAgIGIgPSBiLnN0b3JlUmVmKGJjLmVuZENlbGwoKSk7CiAgICB9IGVs' +
'c2UgewogICAgICAgIGIgPSBiLnN0b3JlQm9vbChmYWxzZSk7IC8vIE5vIHN0YXRlIGluaXQKICAgIH0KCiAgICAvLyBCb2R5CiAgICBsZXQgYm9keTogQ2VsbD8gPSBw' +
'YXJhbXMuYm9keTsKICAgIGlmIChib2R5ICE9IG51bGwpIHsKICAgICAgICBiID0gYi5zdG9yZUJvb2wodHJ1ZSk7CiAgICAgICAgYiA9IGIuc3RvcmVSZWYoYm9keSEh' +
'KTsKICAgIH0gZWxzZSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKGZhbHNlKTsgLy8gTm8gYm9keQogICAgfQoKICAgIC8vIFNlbmQKICAgIGxldCBjOiBDZWxsID0g' +
'Yi5lbmRDZWxsKCk7CiAgICByZXR1cm4gbmF0aXZlU2VuZE1lc3NhZ2VSZXR1cm5Gb3J3YXJkRmVlKGMsIHBhcmFtcy5tb2RlKTsKfQoKaW5saW5lIGZ1biBlbWl0KGJv' +
'ZHk6IENlbGwpIHsKICAgIC8vIGV4dF9vdXRfbXNnX2luZm8kMTEgc3JjOk1zZ0FkZHJlc3NJbnQgZGVzdDpNc2dBZGRyZXNzRXh0IGNyZWF0ZWRfbHQ6dWludDY0IGNy' +
'ZWF0ZWRfYXQ6dWludDMyCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1heWJlOiBzdGF0ZUluaXQgKGZhbHNlKSBib2R5UmVmOiBib29sICh0cnVlKQogICAgbGV0' +
'IGM6IENlbGwgPSBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9yZVVpbnQoMTUyMTE4MDcyMDI3Mzg3NTI4MTc5NjA0Mzg0NjQ1MTMsIDEwNCkKICAgICAgICAuc3RvcmVS' +
'ZWYoYm9keSkKICAgICAgICAuZW5kQ2VsbCgpOwogICAgbmF0aXZlU2VuZE1lc3NhZ2UoYywgMCk7Cn0KCmFzbSBmdW4gYWNjZXB0TWVzc2FnZSgpIHsgQUNDRVBUIH0K' +
'CmFzbSBmdW4gY29tbWl0KCkgeyBDT01NSVQgfQo=';
files['std/text.tact'] =
'Ly8KLy8gU3RyaW5nIGJ1aWxkZXIKLy8KCkBuYW1lKF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9zdGFydF9zdHJpbmcpCm5hdGl2ZSBiZWdpblN0cmluZygpOiBTdHJpbmdC' +
'dWlsZGVyOwoKQG5hbWUoX190YWN0X3N0cmluZ19idWlsZGVyX3N0YXJ0X2NvbW1lbnQpCm5hdGl2ZSBiZWdpbkNvbW1lbnQoKTogU3RyaW5nQnVpbGRlcjsKCkBuYW1l' +
Expand Down
1 change: 1 addition & 0 deletions stdlib/std/send.tact
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ asm fun nativeSendMessageReturnForwardFee(msg: Cell, mode: Int): Int { SENDMSG }

const SendRemainingBalance: Int = 128;
const SendRemainingValue: Int = 64;
const SendDefaultMode: Int = 0;
const SendIgnoreErrors: Int = 2;
const SendPayGasSeparately: Int = 1;
const SendDestroyIfZero: Int = 32;
Expand Down

0 comments on commit 1b05601

Please sign in to comment.