mirror of
https://github.com/arnaucube/circom.git
synced 2026-02-07 03:06:42 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96776d2374 | ||
|
|
ca7379995e |
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "circom",
|
"name": "circom",
|
||||||
"version": "0.5.4",
|
"version": "0.5.5",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "circom",
|
"name": "circom",
|
||||||
"version": "0.5.4",
|
"version": "0.5.5",
|
||||||
"description": "Language to generate logic circuits",
|
"description": "Language to generate logic circuits",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"directories": {
|
"directories": {
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ function execAssignement(ctx, ast) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!left.s) return ctx.throwError(ast, "variable. not defined yet");
|
if ((!left)||(!left.s)) return ctx.throwError(ast, "variable. not defined yet");
|
||||||
|
|
||||||
if (left.t == "C") return execInstantiateComponet(ctx, left, ast.values[1], leftSels);
|
if (left.t == "C") return execInstantiateComponet(ctx, left, ast.values[1], leftSels);
|
||||||
if ((left.t == "S")&&( ["<--", "<==", "-->", "==>"].indexOf(ast.op) < 0)) return ctx.throwError(ast, "Cannot assign to a signal with `=` use <-- or <== ops");
|
if ((left.t == "S")&&( ["<--", "<==", "-->", "==>"].indexOf(ast.op) < 0)) return ctx.throwError(ast, "Cannot assign to a signal with `=` use <-- or <== ops");
|
||||||
@@ -444,14 +444,14 @@ function execInstantiateComponet(ctx, vr, fn, sels) {
|
|||||||
const templateName = fn.name;
|
const templateName = fn.name;
|
||||||
|
|
||||||
const template = ctx.templates[templateName];
|
const template = ctx.templates[templateName];
|
||||||
if (!template) return ctx.throwError("Invalid Template");
|
if (!template) return ctx.throwError(fn, "Invalid Template");
|
||||||
|
|
||||||
const paramValues = [];
|
const paramValues = [];
|
||||||
for (let i=0; i< fn.params.length; i++) {
|
for (let i=0; i< fn.params.length; i++) {
|
||||||
const v = exec(ctx, fn.params[i]);
|
const v = exec(ctx, fn.params[i]);
|
||||||
if (ctx.error) return;
|
if (ctx.error) return;
|
||||||
for (let j=0; j<v.s[0]; j++) {
|
for (let j=0; j<v.s[0]; j++) {
|
||||||
if (v.v[j].t != "N") ctx.throwError("Parameters of a template must be constant");
|
if (v.v[j].t != "N") ctx.throwError(fn, "Parameters of a template must be constant");
|
||||||
}
|
}
|
||||||
paramValues.push(v);
|
paramValues.push(v);
|
||||||
}
|
}
|
||||||
@@ -873,6 +873,8 @@ function execOpOp(ctx, ast, op, lr) {
|
|||||||
right = {t:"N", v: ctx.field.one};
|
right = {t:"N", v: ctx.field.one};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!right) return ctx.throwError(ast, "adding a no number");
|
||||||
|
|
||||||
const resAfter = ctx.lc[op](resBefore, right);
|
const resAfter = ctx.lc[op](resBefore, right);
|
||||||
left.v[o] = resAfter;
|
left.v[o] = resAfter;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user