st.countVarRefs(counts)
}
- // modify value amount because of using only once
- if counts[contract.Value.Amount] > 1 {
- counts[contract.Value.Amount] = 1
- }
-
- // modify value asset because of using only once
- if counts[contract.Value.Asset] > 1 {
- counts[contract.Value.Asset] = 1
- }
-
for _, st := range stmt.body.trueBody {
if stk, err = compileStatement(b, stk, contract, env, clause, counts, st, sequence); err != nil {
return stk, err
st.countVarRefs(counts)
}
- // modify value amount because of using only once
- if counts[contract.Value.Amount] > 1 {
- counts[contract.Value.Amount] = 1
- }
-
- // modify value asset because of using only once
- if counts[contract.Value.Asset] > 1 {
- counts[contract.Value.Asset] = 1
- }
-
stk = condStk
b.addJump(stk, "endif_"+strSequence)
b.addJumpTarget(stk, "else_"+strSequence)
case stmt.lockedAmount.String() == contract.Value.Amount:
stk = b.addAmount(stk, contract.Value.Amount)
case stmt.lockedAmount.String() != contract.Value.Amount && lockCounts[contract.Value.Amount] > 0:
+ counts[contract.Value.Amount] = lockCounts[contract.Value.Amount]
stk = b.addAmount(stk, contract.Value.Amount)
stk, err = compileExpr(b, stk, contract, clause, env, counts, stmt.lockedAmount)
if err != nil {
case stmt.lockedAsset.String() == contract.Value.Asset:
stk = b.addAsset(stk, contract.Value.Asset)
case stmt.lockedAsset.String() != contract.Value.Asset && lockCounts[contract.Value.Asset] > 0:
+ counts[contract.Value.Asset] = lockCounts[contract.Value.Asset]
stk = b.addAsset(stk, contract.Value.Asset)
stk, err = compileExpr(b, stk, contract, clause, env, counts, stmt.lockedAsset)
if err != nil {