@@ -193,102 +193,102 @@ export default {
193193 }
194194 }
195195
196+ const contractIndex = sourceUnitNodes . findIndex (
197+ ( n : any ) => n . name === node . name ,
198+ ) ;
199+ if ( scope . indicators . zkSnarkVerificationRequired ) {
200+ sourceUnitNodes [ contractIndex ] . baseContracts . push (
201+ buildNode ( 'InheritanceSpecifier' , {
202+ nodeType : 'UserDefinedTypeName' ,
203+ name : 'MerkleTree' ,
204+ } ) ,
205+ ) ;
206+ }
207+ sourceUnitNodes . splice (
208+ 1 ,
209+ 0 ,
210+ ...buildNode ( 'ContractBoilerplate' , {
211+ bpSection : 'importStatements' ,
212+ scope,
213+ } ) ,
214+ ) ;
196215
197- const contractIndex = sourceUnitNodes . findIndex (
198- ( n : any ) => n . name === node . name ,
199- ) ;
200- sourceUnitNodes [ contractIndex ] . baseContracts . push (
201- buildNode ( 'InheritanceSpecifier' , {
202- nodeType : 'UserDefinedTypeName' ,
203- name : 'MerkleTree' ,
204- } ) ,
205- ) ;
206-
207- sourceUnitNodes . splice (
208- 1 ,
209- 0 ,
210- ...buildNode ( 'ContractBoilerplate' , {
211- bpSection : 'importStatements' ,
212- scope,
213- } ) ,
214- ) ;
215-
216- // unshift in reverse order from how we want them to appear
217- contractNodes . unshift (
218- ...buildNode ( 'ContractBoilerplate' , {
219- bpSection : 'verify' ,
220- scope,
221- circuitParams : state . circuitParams ,
222- } )
223- ) ;
224- contractNodes . unshift (
225- ...buildNode ( 'ContractBoilerplate' , {
226- bpSection : 'registerZKPPublicKey' ,
227- scope,
228- } ) ,
229- ) ;
230- contractNodes . unshift (
231- ...buildNode ( 'ContractBoilerplate' , {
232- bpSection : 'constructor' ,
233- scope,
234- } ) ,
235- ) ;
236- contractNodes . unshift (
237- ...buildNode ( 'ContractBoilerplate' , {
238- bpSection : 'stateVariableDeclarations' ,
239- scope,
240- } ) ,
241- ) ;
242- if ( state . mainPrivateFunctionName ) {
243- parent . _newASTPointer [ 0 ] . mainPrivateFunctionName =
244- state . mainPrivateFunctionName ; // TODO fix bodge
245- parent . _newASTPointer [ 0 ] . nodes . forEach ( ( node : any ) => {
246- if ( node . nodeType === 'ContractDefinition' )
247- node . mainPrivateFunctionName = state . mainPrivateFunctionName ;
248- } ) ;
249- }
216+ // unshift in reverse order from how we want them to appear
217+ contractNodes . unshift (
218+ ...buildNode ( 'ContractBoilerplate' , {
219+ bpSection : 'verify' ,
220+ scope,
221+ circuitParams : state . circuitParams ,
222+ } )
223+ ) ;
224+ contractNodes . unshift (
225+ ...buildNode ( 'ContractBoilerplate' , {
226+ bpSection : 'registerZKPPublicKey' ,
227+ scope,
228+ } ) ,
229+ ) ;
230+ contractNodes . unshift (
231+ ...buildNode ( 'ContractBoilerplate' , {
232+ bpSection : 'constructor' ,
233+ scope,
234+ } ) ,
235+ ) ;
236+ contractNodes . unshift (
237+ ...buildNode ( 'ContractBoilerplate' , {
238+ bpSection : 'stateVariableDeclarations' ,
239+ scope,
240+ } ) ,
241+ ) ;
242+ if ( state . mainPrivateFunctionName ) {
243+ parent . _newASTPointer [ 0 ] . mainPrivateFunctionName =
244+ state . mainPrivateFunctionName ; // TODO fix bodge
245+ parent . _newASTPointer [ 0 ] . nodes . forEach ( ( node : any ) => {
246+ if ( node . nodeType === 'ContractDefinition' )
247+ node . mainPrivateFunctionName = state . mainPrivateFunctionName ;
248+ } ) ;
249+ }
250250
251- node . _newASTPointer . forEach ( node => {
251+ node . _newASTPointer . forEach ( node => {
252252
253- if ( node . nodeType === 'FunctionDefinition' && node . kind === 'function' ) {
254- state . internalFncName ?. forEach ( ( name , index ) => {
255- if ( node . name === name ) {
256- node . msgSigRequired = true ;
257- state . postStatements ??= [ ] ;
258- state . postStatements = cloneDeep ( node . body . postStatements ) ;
259- }
260- if ( node . name === state . callingFncName [ index ] ) {
261- node . body . postStatements . forEach ( childNode => {
262- state . postStatements ?. forEach ( node => {
263- if ( ! childNode . nullifiersRequired && node . nullifiersRequired )
264- childNode . nullifiersRequired = node . nullifiersRequired ;
265- if ( ! childNode . oldCommitmentAccessRequired && node . oldCommitmentAccessRequired )
266- childNode . oldCommitmentAccessRequired = node . oldCommitmentAccessRequired ;
267- if ( ! childNode . newCommitmentsRequired && node . newCommitmentsRequired )
268- childNode . newCommitmentsRequired = node . newCommitmentsRequired ;
269- if ( ! childNode . encryptionRequired && node . encryptionRequired )
270- childNode . encryptionRequired = node . encryptionRequired ;
271- } )
272- } )
273- node . parameters . parameters . forEach ( childNode => {
274-
275- state . postStatements ?. forEach ( node => {
276- if ( ! childNode . nullifiersRequired && node . nullifiersRequired )
277- childNode . nullifiersRequired = node . nullifiersRequired ;
278- if ( ! childNode . oldCommitmentAccessRequired && node . oldCommitmentAccessRequired )
279- childNode . oldCommitmentAccessRequired = node . oldCommitmentAccessRequired ;
280- if ( ! childNode . newCommitmentsRequired && node . newCommitmentsRequired )
281- childNode . newCommitmentsRequired = node . newCommitmentsRequired ;
282- if ( ! childNode . encryptionRequired && node . encryptionRequired )
283- childNode . encryptionRequired = node . encryptionRequired ;
284- } )
285- } )
286- }
287- } ) ;
253+ if ( node . nodeType === 'FunctionDefinition' && node . kind === 'function' ) {
254+ state . internalFncName ?. forEach ( ( name , index ) => {
255+ if ( node . name === name ) {
256+ node . msgSigRequired = true ;
257+ state . postStatements ??= [ ] ;
258+ state . postStatements = cloneDeep ( node . body . postStatements ) ;
288259 }
289- } )
290- } ,
291- } ,
260+ if ( node . name === state . callingFncName [ index ] ) {
261+ node . body . postStatements . forEach ( childNode => {
262+ state . postStatements ?. forEach ( node => {
263+ if ( ! childNode . nullifiersRequired && node . nullifiersRequired )
264+ childNode . nullifiersRequired = node . nullifiersRequired ;
265+ if ( ! childNode . oldCommitmentAccessRequired && node . oldCommitmentAccessRequired )
266+ childNode . oldCommitmentAccessRequired = node . oldCommitmentAccessRequired ;
267+ if ( ! childNode . newCommitmentsRequired && node . newCommitmentsRequired )
268+ childNode . newCommitmentsRequired = node . newCommitmentsRequired ;
269+ if ( ! childNode . encryptionRequired && node . encryptionRequired )
270+ childNode . encryptionRequired = node . encryptionRequired ;
271+ } )
272+ } )
273+ node . parameters . parameters . forEach ( childNode => {
274+
275+ state . postStatements ?. forEach ( node => {
276+ if ( ! childNode . nullifiersRequired && node . nullifiersRequired )
277+ childNode . nullifiersRequired = node . nullifiersRequired ;
278+ if ( ! childNode . oldCommitmentAccessRequired && node . oldCommitmentAccessRequired )
279+ childNode . oldCommitmentAccessRequired = node . oldCommitmentAccessRequired ;
280+ if ( ! childNode . newCommitmentsRequired && node . newCommitmentsRequired )
281+ childNode . newCommitmentsRequired = node . newCommitmentsRequired ;
282+ if ( ! childNode . encryptionRequired && node . encryptionRequired )
283+ childNode . encryptionRequired = node . encryptionRequired ;
284+ } )
285+ } )
286+ }
287+ } ) ;
288+ }
289+ } )
290+ } ,
291+ } ,
292292
293293 FunctionDefinition : {
294294 enter ( path : NodePath , state : any ) {
0 commit comments