-
Notifications
You must be signed in to change notification settings - Fork 43
Description
Overview
There are several zappify errors when using the struct constructor syntax.
Tasks
Describe which contracts are affected
// SPDX-License-Identifier: CC0
pragma solidity ^0.8.0;
contract Assign {
secret uint256 private a;
secret uint256 private b;
struct MyStruct {
uint256 prop1;
bool prop2;
}
MyStruct public x;
function add( secret MyStruct memory value) public {
MyStruct memory localStruct = MyStruct({prop1: 7, prop2: false});
known a += value.prop1 + localStruct.prop1;
x.prop2 = true;
}
function remove( secret MyStruct memory value) public {
add(value);
known b += value.prop1;
x.prop2 = true;
}
}
Describe the bug that should be fixed
The errors:
TypeError: Cannot destructure property 'name' of '(intermediate value)(intermediate value)(intermediate value)' as it is null.
at publicInputsVisitor (file:///Users/lydiagarms/starlight/built/transformers/visitors/toCircuitVisitor.js:252:11)
at traversePathsFast (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:159:5)
at NodePath.traversePathsFast (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:114:9)
at Object.enter (file:///Users/lydiagarms/starlight/built/transformers/visitors/toCircuitVisitor.js:1116:22)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:47:17)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:78:25)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:78:25)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
and
TypeError: Cannot read properties of undefined (reading 'expression')
at Object.enter (file:///Users/lydiagarms/starlight/built/transformers/visitors/toCircuitVisitor.js:1140:77)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:47:17)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:78:25)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:78:25)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:65:29)
at NodePath.traverse (file:///Users/lydiagarms/starlight/built/traverse/NodePath.js:111:9)
at traverse (file:///Users/lydiagarms/starlight/built/traverse/traverse.js:78:25)
Definition of done
When is this task complete?
Test contracts both public and secret structs being created via the constructor syntax, ensure this is working correctly.