@@ -23,6 +23,7 @@ import {
2323 VariableContext ,
2424 VarIdentifierContext ,
2525 ParserRuleContext ,
26+ BusDeclarationContext ,
2627} from "../../src" ;
2728
2829import {
@@ -92,7 +93,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
9293 visitSignalIdentifier = ( ctx : SignalIdentifierContext ) => {
9394 const base = ctx . identifier ( ) ;
9495 const baseName = base . ID ( ) ;
95- const resolvedDimensions : bigint [ ] = [ ] ;
96+ const resolvedDimensions : number [ ] = [ ] ;
9697
9798 for ( const dimension of base . arrayDimension_list ( ) ) {
9899 const [ dimensionValue , linkedErrors ] = new ExpressionHelper (
@@ -126,7 +127,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
126127 return ;
127128 }
128129
129- resolvedDimensions . push ( dimensionValue ) ;
130+ resolvedDimensions . push ( Number ( dimensionValue ) ) ;
130131 }
131132
132133 if (
@@ -147,6 +148,10 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
147148 ) ;
148149 }
149150
151+ if ( ctx . parentCtx ! . parentCtx instanceof BusDeclarationContext ) {
152+ throw new Error ( "Buses are not supported" ) ;
153+ }
154+
150155 const signalDeclarationContext = ctx . parentCtx !
151156 . parentCtx as SignalDeclarationContext ;
152157
@@ -172,7 +177,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
172177 } ;
173178
174179 visitIfWithFollowUpIf = ( ctx : IfWithFollowUpIfContext ) => {
175- let [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
180+ const [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
176181 . setExpressionContext ( ctx . _cond )
177182 . setVariableContext ( this . _vars )
178183 . parseExpression ( ) ;
@@ -187,7 +192,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
187192 } ;
188193
189194 visitIfRegular = ( ctx : IfRegularContext ) => {
190- let [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
195+ const [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
191196 . setExpressionContext ( ctx . _cond )
192197 . setVariableContext ( this . _vars )
193198 . parseExpression ( ) ;
@@ -204,7 +209,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
204209 visitIfRegularElseWithFollowUpIf = (
205210 ctx : IfRegularElseWithFollowUpIfContext ,
206211 ) => {
207- let [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
212+ const [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
208213 . setExpressionContext ( ctx . _cond )
209214 . setVariableContext ( this . _vars )
210215 . parseExpression ( ) ;
@@ -221,7 +226,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
221226 } ;
222227
223228 visitIfRegularElseRegular = ( ctx : IfRegularElseRegularContext ) => {
224- let [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
229+ const [ condition , linkedErrors ] = new ExpressionHelper ( this . fileIdentifier )
225230 . setExpressionContext ( ctx . _cond )
226231 . setVariableContext ( this . _vars )
227232 . parseExpression ( ) ;
@@ -450,19 +455,24 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
450455
451456 switch ( ctx . ASSIGNMENT_WITH_OP ( ) . getText ( ) ) {
452457 case "+=" :
453- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] + value ;
458+ this . _vars [ assigneeName ] =
459+ BigInt ( this . _vars [ assigneeName ] as any ) + value ;
454460 break ;
455461 case "-=" :
456- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] - value ;
462+ this . _vars [ assigneeName ] =
463+ BigInt ( this . _vars [ assigneeName ] as any ) - value ;
457464 break ;
458465 case "*=" :
459- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] * value ;
466+ this . _vars [ assigneeName ] =
467+ BigInt ( this . _vars [ assigneeName ] as any ) * value ;
460468 break ;
461469 case "**=" :
462- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] ** value ;
470+ this . _vars [ assigneeName ] =
471+ BigInt ( this . _vars [ assigneeName ] as any ) ** value ;
463472 break ;
464473 case "/=" :
465- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] / value ;
474+ this . _vars [ assigneeName ] =
475+ BigInt ( this . _vars [ assigneeName ] as any ) / value ;
466476 break ;
467477 case "\\\\=" :
468478 this . errors . push ( {
@@ -473,26 +483,32 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
473483 } ) ;
474484 break ;
475485 case "%=" :
476- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] % value ;
486+ this . _vars [ assigneeName ] =
487+ BigInt ( this . _vars [ assigneeName ] as any ) % value ;
477488 break ;
478489 case "<<=" :
479- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] << value ;
490+ this . _vars [ assigneeName ] =
491+ BigInt ( this . _vars [ assigneeName ] as any ) << value ;
480492 break ;
481493 case ">>=" :
482- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] >> value ;
494+ this . _vars [ assigneeName ] =
495+ BigInt ( this . _vars [ assigneeName ] as any ) >> value ;
483496 break ;
484497 case "&=" :
485- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] & value ;
498+ this . _vars [ assigneeName ] =
499+ BigInt ( this . _vars [ assigneeName ] as any ) & value ;
486500 break ;
487501 case "^=" :
488- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] ^ value ;
502+ this . _vars [ assigneeName ] =
503+ BigInt ( this . _vars [ assigneeName ] as any ) ^ value ;
489504 break ;
490505 case "|=" :
491- this . _vars [ assigneeName ] = this . _vars [ assigneeName ] | value ;
506+ this . _vars [ assigneeName ] =
507+ BigInt ( this . _vars [ assigneeName ] as any ) | value ;
492508 break ;
493509 default :
494510 this . errors . push ( {
495- type : ErrorType . ReachedUnkownOperation ,
511+ type : ErrorType . ReachedUnknownOperation ,
496512 context : ctx ,
497513 fileIdentifier : this . fileIdentifier ,
498514 message : `Invalid operation type ${ ctx . ASSIGNMENT_WITH_OP ( ) . getText ( ) } (${ ctx . start . line } :${ ctx . start . column } )` ,
@@ -542,14 +558,18 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
542558
543559 switch ( ctx . SELF_OP ( ) . getText ( ) ) {
544560 case "++" :
561+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
562+ // @ts -ignore
545563 this . _vars [ assigneeName ] ++ ;
546564 break ;
547565 case "--" :
566+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
567+ // @ts -ignore
548568 this . _vars [ assigneeName ] -- ;
549569 break ;
550570 default :
551571 this . errors . push ( {
552- type : ErrorType . ReachedUnkownOperation ,
572+ type : ErrorType . ReachedUnknownOperation ,
553573 context : ctx ,
554574 fileIdentifier : this . fileIdentifier ,
555575 message : `Invalid operation type ${ ctx . SELF_OP ( ) . getText ( ) } (${ ctx . start . line } :${ ctx . start . column } )` ,
@@ -600,7 +620,7 @@ export class CircomTemplateInputsVisitor extends CircomVisitor<void> {
600620 const expressionHelper = new ExpressionHelper ( this . fileIdentifier ) ;
601621
602622 let result : IdentifierObject [ ] | null = [ ] ;
603- let resolvedDimensions : bigint [ ] = [ ] ;
623+ const resolvedDimensions : bigint [ ] = [ ] ;
604624
605625 for ( let i = 0 ; i < ctx . arrayDimension_list ( ) . length ; i ++ ) {
606626 const [ dimension , linkedErrors ] = expressionHelper
0 commit comments