Compare commits

..

4 Commits

Author SHA1 Message Date
Jordi Baylina
700412f23d 0.0.33 2019-09-15 18:55:40 +02:00
Jordi Baylina
832077fbe9 Fix Optimization 2019-09-15 18:55:28 +02:00
Jordi Baylina
0df0ac712d 0.0.32 2019-09-15 10:48:02 +02:00
Jordi Baylina
67a35ee400 better info in runtime constraint assertion 2019-09-15 10:47:52 +02:00
5 changed files with 14 additions and 5 deletions

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "circom", "name": "circom",
"version": "0.0.31", "version": "0.0.33",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "circom", "name": "circom",
"version": "0.0.31", "version": "0.0.33",
"description": "Language to generate logic circuits", "description": "Language to generate logic circuits",
"main": "index.js", "main": "index.js",
"directories": { "directories": {

View File

@@ -277,7 +277,12 @@ function reduceConstrains(ctx) {
c.a={ type: "LINEARCOMBINATION", values: {} }; c.a={ type: "LINEARCOMBINATION", values: {} };
c.b={ type: "LINEARCOMBINATION", values: {} }; c.b={ type: "LINEARCOMBINATION", values: {} };
c.c={ type: "LINEARCOMBINATION", values: {} }; c.c={ type: "LINEARCOMBINATION", values: {} };
isolatedSignal.category = "constant";
let lSignal = ctx.signals[isolatedSignal];
while (lSignal.equivalence) {
lSignal = ctx.signals[lSignal.equivalence];
}
lSignal.category = "constant";
} }
} }

View File

@@ -1046,6 +1046,8 @@ function execSignalAssign(ctx, ast) {
} }
function execConstrain(ctx, ast) { function execConstrain(ctx, ast) {
ast.fileName = ctx.fileName;
ast.filePath = ctx.filePath;
const a = exec(ctx, ast.values[0]); const a = exec(ctx, ast.values[0]);
if (ctx.error) return; if (ctx.error) return;
const b = exec(ctx, ast.values[1]); const b = exec(ctx, ast.values[1]);

View File

@@ -422,11 +422,13 @@ function genConstrain(ctx, ast) {
if (ctx.error) return; if (ctx.error) return;
const b = gen(ctx, ast.values[1]); const b = gen(ctx, ast.values[1]);
if (ctx.error) return; if (ctx.error) return;
return `ctx.assert(${a}, ${b})`; const strErr = ast.fileName +": "+ast.first_line;
return `ctx.assert(${a}, ${b}, \"${strErr}\")`;
} }
function genSignalAssignConstrain(ctx, ast) { function genSignalAssignConstrain(ctx, ast) {
return genVarAssignement(ctx, ast) + ";\n" + genConstrain(ctx, ast); // return genVarAssignement(ctx, ast) + ";\n" + genConstrain(ctx, ast);
return genVarAssignement(ctx, ast);
} }
function genVarAddAssignement(ctx, ast) { function genVarAddAssignement(ctx, ast) {