diff --git a/lib/node_modules/@stdlib/repl/lib/eager_evaluator.js b/lib/node_modules/@stdlib/repl/lib/eager_evaluator.js index 25a24d61d86b..c8cd708df713 100644 --- a/lib/node_modules/@stdlib/repl/lib/eager_evaluator.js +++ b/lib/node_modules/@stdlib/repl/lib/eager_evaluator.js @@ -65,12 +65,13 @@ var ANSI_RESET = ANSI_COLORS[ 'reset' ]; * @returns {boolean} boolean indicating whether the node is side-effect-free */ function traverse( node ) { + var properties; var fname; var i; if ( !node ) { return false; } - if ( node.type === 'Literal' || node.type === 'Identifier' ) { + if ( node.type === 'Literal' || node.type === 'Identifier' || ( node.type === 'UnaryExpression' && node.operator !== 'delete' ) ) { return true; } if ( node.type === 'BinaryExpression' ) { @@ -96,6 +97,21 @@ function traverse( node ) { } return true; } + } else if ( node.type === 'ArrayExpression' ) { + for ( i = 0; i < node.elements.length; i++ ) { + if ( !traverse( node.elements[ i ] ) ) { + return false; + } + } + return true; + } else if ( node.type === 'ObjectExpression' ) { + for ( i = 0; i < node.properties.length; i++ ) { + properties = node.properties; + if ( !traverse( properties[ i ].key ) || !traverse( properties[ i ].value ) ) { + return false; + } + } + return true; } return false; }