everx-labs / TVM-Solidity-Compiler

Solidity compiler for TVM
GNU General Public License v3.0
125 stars 72 forks source link

Type check error on return from "responsible" function #156

Closed BorisI closed 3 months ago

BorisI commented 5 months ago

call to a responsible function results in a type check error in return code: pragma ton-solidity >= 0.74.0; ... function foo() external responsible returns (address) { address addr; ... return{value: 0, bounce: false, flag: 64} addr; // line 76 } ...
678 29694 26 GETGLOB 4 :76 679 29712 18 PUSHINT 0 :76 680 29738 26 SETINDEXQ 2 :76 681 29788 0 UNHANDLED EXCEPTION: VM Exception: type check error, code 7, value: 0 /home/boris/.cargo/git/checkouts/ever-vm-87527072ab50ad1b/ef47923/src/stack/mod.rs:498 CMD: SETINDEXQ err: item is not a tuple :76 execute result: Err(TvmExceptionFull(type check error, code 7, value 0, file /home/boris/.cargo/git/checkouts/ever-vm-87527072ab50ad1b/ef47923/src/stack/mod.rs:498, "CMD: SETINDEXQ err: item is not a tuple"))

BorisI commented 5 months ago

here's the code generated for the problematic line:

.loc <>, 76
GETGLOB 4
PUSHINT 0
SETINDEXQ 2
FALSE
SETINDEXQ 1
PUSHPOW2 7
SETINDEXQ 4
SETGLOB 4
.loc <>, 0