diff --git a/src/test/compilation-failed/abi-global-errors.spec.ts b/src/test/compilation-failed/abi-global-errors.spec.ts new file mode 100644 index 000000000..3f9808dfc --- /dev/null +++ b/src/test/compilation-failed/abi-global-errors.spec.ts @@ -0,0 +1,13 @@ +import { __DANGER_resetNodeId } from "../../grammar/ast"; +import { itShouldNotCompile } from "./util"; + +describe("abi/global.ts errors", () => { + beforeEach(() => { + __DANGER_resetNodeId(); + }); + + itShouldNotCompile({ + testName: "sha256-expects-string-or-slice", + errorMessage: "sha256 expects string or slice argument", + }); +}); diff --git a/src/test/compilation-failed/const-eval-failed.spec.ts b/src/test/compilation-failed/const-eval-failed.spec.ts index f84d1c7e3..20cb6bddd 100644 --- a/src/test/compilation-failed/const-eval-failed.spec.ts +++ b/src/test/compilation-failed/const-eval-failed.spec.ts @@ -198,4 +198,9 @@ describe("fail-const-eval", () => { errorMessage: "Cannot evaluate expression to a constant: ascii string cannot be empty", }); + itShouldNotCompile({ + testName: "const-eval-sha256-too-large", + errorMessage: + "Cannot evaluate expression to a constant: data is too large for sha256 hash, expected up to 128 bytes, got 129", + }); }); diff --git a/src/test/compilation-failed/contracts/const-eval-sha256-too-large.tact b/src/test/compilation-failed/contracts/const-eval-sha256-too-large.tact new file mode 100644 index 000000000..d988f00f0 --- /dev/null +++ b/src/test/compilation-failed/contracts/const-eval-sha256-too-large.tact @@ -0,0 +1,5 @@ +contract Sha256 { + receive() { + sha256("------------------------------------------------------------------------------------------------------------------------------129"); + } +} diff --git a/src/test/compilation-failed/contracts/sha256-expects-string-or-slice.tact b/src/test/compilation-failed/contracts/sha256-expects-string-or-slice.tact new file mode 100644 index 000000000..fc29d475a --- /dev/null +++ b/src/test/compilation-failed/contracts/sha256-expects-string-or-slice.tact @@ -0,0 +1,6 @@ +contract Sha256 { + val: Int = 0; + receive() { + sha256(self.val); + } +} diff --git a/src/test/compilation-failed/tact.config.json b/src/test/compilation-failed/tact.config.json index d63b7dc1a..d4a86c8b0 100644 --- a/src/test/compilation-failed/tact.config.json +++ b/src/test/compilation-failed/tact.config.json @@ -226,6 +226,16 @@ "name": "scope-const-shadows-stdlib-ident", "path": "./contracts/scope-const-shadows-stdlib-ident.tact", "output": "./contracts/output" + }, + { + "name": "sha256-expects-string-or-slice", + "path": "./contracts/sha256-expects-string-or-slice.tact", + "output": "./contracts/output" + }, + { + "name": "const-eval-sha256-too-large", + "path": "./contracts/const-eval-sha256-too-large.tact", + "output": "./contracts/output" } ] }