Fix undefined if

This commit is contained in:
Jordi Baylina
2018-10-29 07:09:28 +01:00
parent 9d0b27a7e8
commit bfdf17fd89
3 changed files with 52 additions and 18 deletions

View File

@@ -547,6 +547,7 @@ function execFor(ctx, ast) {
let v = exec(ctx, ast.condition);
if (ctx.error) return;
if (typeof v.value != "undefined") {
while ((v.value.neq(0))&&(!ctx.returnValue)) {
exec(ctx, ast.body);
if (ctx.error) return;
@@ -558,11 +559,13 @@ function execFor(ctx, ast) {
if (ctx.error) return;
}
}
}
function execWhile(ctx, ast) {
let v = exec(ctx, ast.condition);
if (ctx.error) return;
if (typeof v.value != "undefined") {
while ((v.value.neq(0))&&(!ctx.returnValue)) {
exec(ctx, ast.body);
if (ctx.error) return;
@@ -571,11 +574,13 @@ function execWhile(ctx, ast) {
if (ctx.error) return;
}
}
}
function execIf(ctx, ast) {
let v = exec(ctx, ast.condition);
if (ctx.error) return;
if (typeof v.value != "undefined") {
if ((v.value.neq(0))&&(!ctx.returnValue)) {
exec(ctx, ast.then);
if (ctx.error) return;
@@ -586,6 +591,7 @@ function execIf(ctx, ast) {
}
}
}
}
function execVarAssignement(ctx, ast) {

14
test/cases.js Normal file
View File

@@ -0,0 +1,14 @@
const chai = require("chai");
const path = require("path");
const snarkjs = require("snarkjs");
const crypto = require("crypto");
const compiler = require("../index.js");
const assert = chai.assert;
describe("Sum test", () => {
it("Should compile a code with an undefined if", async() => {
await compiler(path.join(__dirname, "circuits", "undefinedif.circom"));
});
});

View File

@@ -0,0 +1,14 @@
template X() {
signal input i;
signal input j;
signal output out;
if (i == 0) {
out <-- i;
}
else {
out <-- j;
}
}
component main = X();