@@ -141,10 +141,9 @@ export const evaluateAst = (
141141
142142 switch ( node . operator ) {
143143 case "+" :
144- if ( typeof left === "number" && typeof right === "number" ) {
145- return left + right ;
146- }
147- return String ( left ) + String ( right ) ;
144+ // For addition, handle both numeric addition and string concatenation
145+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
146+ return ( left as any ) + ( right as any ) ;
148147 case "-" :
149148 return ( left as number ) - ( right as number ) ;
150149 case "*" :
@@ -224,32 +223,25 @@ export const evaluateAst = (
224223 * @returns The result of evaluation
225224 */
226225 const evaluateNode = ( node : Expression ) : unknown => {
227- try {
228- switch ( node . type ) {
229- case NodeType . Literal :
230- return evaluateLiteral ( node ) ;
231- case NodeType . Identifier :
232- return evaluateIdentifier ( node ) ;
233- case NodeType . MemberExpression :
234- return evaluateMemberExpression ( node ) ;
235- case NodeType . CallExpression :
236- return evaluateCallExpression ( node ) ;
237- case NodeType . BinaryExpression :
238- return evaluateBinaryExpression ( node ) ;
239- case NodeType . UnaryExpression :
240- return evaluateUnaryExpression ( node ) ;
241- case NodeType . ConditionalExpression :
242- return evaluateConditionalExpression ( node ) ;
243- default :
244- throw new ExpressionError (
245- `Unsupported node type: ${ ( node as Expression ) . type } ` ,
246- ) ;
247- }
248- } catch ( error ) {
249- if ( error instanceof ExpressionError ) {
250- throw new ExpressionError ( `Evaluation error: ${ error . message } ` ) ;
251- }
252- throw error ;
226+ switch ( node . type ) {
227+ case NodeType . Literal :
228+ return evaluateLiteral ( node ) ;
229+ case NodeType . Identifier :
230+ return evaluateIdentifier ( node ) ;
231+ case NodeType . MemberExpression :
232+ return evaluateMemberExpression ( node ) ;
233+ case NodeType . CallExpression :
234+ return evaluateCallExpression ( node ) ;
235+ case NodeType . BinaryExpression :
236+ return evaluateBinaryExpression ( node ) ;
237+ case NodeType . UnaryExpression :
238+ return evaluateUnaryExpression ( node ) ;
239+ case NodeType . ConditionalExpression :
240+ return evaluateConditionalExpression ( node ) ;
241+ default :
242+ throw new ExpressionError (
243+ `Evaluation error: Unsupported node type: ${ ( node as Expression ) . type } ` ,
244+ ) ;
253245 }
254246 } ;
255247
0 commit comments