diff --git a/src/boilerplate/circuit/zokrates/nodes/BoilerplateGenerator.ts b/src/boilerplate/circuit/zokrates/nodes/BoilerplateGenerator.ts index 5d2b4437..3015fa7e 100644 --- a/src/boilerplate/circuit/zokrates/nodes/BoilerplateGenerator.ts +++ b/src/boilerplate/circuit/zokrates/nodes/BoilerplateGenerator.ts @@ -47,15 +47,15 @@ const collectIncrements = (bpg: BoilerplateGenerator) => { if (inc.nodeType === 'MemberAccess') inc.name ??= `${inc.expression.name}.${inc.memberName}`; if (!inc.name) inc.name = inc.value; let modName = inc.modName ? inc.modName : inc.name; - if (incrementsArray.some(existingInc => inc.name === existingInc.name)) + if (incrementsArray.some(existingInc => inc.name === existingInc.name && inc.id === existingInc.id)) continue; incrementsArray.push({ name: inc.name, precedingOperator: inc.precedingOperator, }); - - if (counter != inc.counter) { - incrementsString[inc.counter] += `${modName}`; + + if (counter !== inc.counter) { + incrementsString[inc.counter] = `${modName}`; } else { incrementsString[inc.counter] += ` ${inc.precedingOperator} ${modName}`; } @@ -84,7 +84,7 @@ const collectIncrements = (bpg: BoilerplateGenerator) => { }); if (counter != dec.counter) { - incrementsString[dec.counter + incCounter] += `${modName}`; + incrementsString[dec.counter + incCounter] = `${modName}`; } else { // if we have decrements, this str represents the value we must take away // => it's a positive value with +'s diff --git a/src/boilerplate/circuit/zokrates/raw/BoilerplateGenerator.ts b/src/boilerplate/circuit/zokrates/raw/BoilerplateGenerator.ts index cdd792a1..facea931 100644 --- a/src/boilerplate/circuit/zokrates/raw/BoilerplateGenerator.ts +++ b/src/boilerplate/circuit/zokrates/raw/BoilerplateGenerator.ts @@ -529,10 +529,9 @@ class BoilerplateGenerator { importStatements(): string[] { return []; // TODO: we might eventually import some underflow/overflow functions. }, - statements({ name: x, addend, newCommitmentValue, structProperties, memberName}): string[] { if (structProperties) { - return [`${x}.${memberName} = ${x}.${memberName} + ${newCommitmentValue[memberName]}`] + return [`${x}.${memberName} = ${x}.${memberName} + ${newCommitmentValue}`] } return [`${x} = ${x} + ${newCommitmentValue}`]; //return [ diff --git a/src/codeGenerators/circuit/zokrates/toCircuit.ts b/src/codeGenerators/circuit/zokrates/toCircuit.ts index 8c92ee05..f93b0695 100644 --- a/src/codeGenerators/circuit/zokrates/toCircuit.ts +++ b/src/codeGenerators/circuit/zokrates/toCircuit.ts @@ -312,6 +312,13 @@ function codeGenerator(node: any) { return Circuitbp.generateBoilerplate(node); case 'BoilerplateStatement': { + let newComValue = ''; + if (node.bpType === 'incrementation') newComValue = codeGenerator(node.addend); + if (node.bpType === 'decrementation') newComValue = codeGenerator(node.subtrahend); + console.log(node.newCommitmentValue); + console.log(node.addend); + console.log(newComValue); + node.newCommitmentValue = newComValue; return Circuitbp.generateBoilerplate(node); } diff --git a/test/contracts/KnownUnknown.zol b/test/contracts/KnownUnknown.zol index 0f30df65..512d217f 100644 --- a/test/contracts/KnownUnknown.zol +++ b/test/contracts/KnownUnknown.zol @@ -17,7 +17,7 @@ contract Assign { unknown x.prop1 += value + a; unknown x.prop2 += value; unknown b += value; - unknown x.prop1 += value ; + unknown x.prop1 += value; a+= value; }