diff --git a/libs/remix-debug/src/source/astWalker.js b/libs/remix-debug/src/source/astWalker.js deleted file mode 100644 index 30ca6d3b1c..0000000000 --- a/libs/remix-debug/src/source/astWalker.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict' -/** - * Crawl the given AST through the function walk(ast, callback) - */ -function AstWalker () {} // eslint-disable-line - -/** - * visit all the AST nodes - * - * @param {Object} ast - AST node - * @param {Object or Function} callback - if (Function) the function will be called for every node. - * - if (Object) callback[] will be called for - * every node of type . callback["*"] will be called for all other nodes. - * in each case, if the callback returns false it does not descend into children. - * If no callback for the current type, children are visited. - */ -AstWalker.prototype.walk = function (ast, callback) { - if (callback instanceof Function) { - callback = { '*': callback } - } - if (!('*' in callback)) { - callback['*'] = function () { return true } - } - const nodes = ast.nodes || (ast.body && ast.body.statements) || ast.declarations || ast.statements - if (nodes && ast.initializationExpression) { // 'for' loop handling - nodes.push(ast.initializationExpression) - } - if (manageCallBack(ast, callback) && nodes && nodes.length > 0) { - for (let k in nodes) { - const child = nodes[k] - this.walk(child, callback) - } - } -} - -/** - * walk the given @astList - * - * @param {Object} sourcesList - sources list (containing root AST node) - * @param {Function} - callback used by AstWalker to compute response - */ -AstWalker.prototype.walkAstList = function (sourcesList, callback) { - const walker = new AstWalker() - for (let k in sourcesList) { - walker.walk(sourcesList[k].ast, callback) - } -} - -function manageCallBack (node, callback) { - if (node.nodeType in callback) { - return callback[node.nodeType](node) - } else { - return callback['*'](node) - } -} - -module.exports = AstWalker diff --git a/libs/remix-debug/test/astwalker.js b/libs/remix-debug/test/astwalker.js deleted file mode 100644 index 6e9f705762..0000000000 --- a/libs/remix-debug/test/astwalker.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict' -const tape = require('tape') -const AstWalker = require('../src/source/astWalker') -const node = require('./resources/ast') - -tape('ASTWalker', function (t) { - t.test('ASTWalker.walk', function (st) { - st.plan(24) - const astwalker = new AstWalker() - - astwalker.walk(node.ast.ast, function (node) { - if (node.nodeType === 'ContractDefinition') { - checkContract(st, node) - } - if (node.nodeType === 'FunctionDefinition') { - checkSetFunction(st, node) - } - return true - }) - - const callback = {} - callback.FunctionDefinition = function (node) { - st.equal(node.nodeType, 'FunctionDefinition') - st.equal(node.name === 'set' || node.name === 'get', true) - return true - } - astwalker.walk(node.ast.ast, callback) - }) -}) - -function checkContract (st, node) { - st.equal(node.name, 'test') - st.equal(node.nodes[0].name, 'x') - st.equal(node.nodes[0].typeDescriptions.typeString, 'int256') - st.equal(node.nodes[1].name, 'y') - st.equal(node.nodes[1].typeDescriptions.typeString, 'int256') - st.equal(node.nodes[2].nodeType, 'FunctionDefinition') - st.equal(node.nodes[2].stateMutability, 'nonpayable') - st.equal(node.nodes[2].name, 'set') - st.equal(node.nodes[2].visibility, 'public') -} - -function checkSetFunction (st, node) { - if (node.name === 'set') { - st.equal(node.parameters.nodeType, 'ParameterList') - st.equal(node.returnParameters.nodeType, 'ParameterList') - st.equal(node.body.nodeType, 'Block') - st.equal(node.body.statements[0].nodeType, 'ExpressionStatement') - checkExpressionStatement(st, node.body.statements[0]) - } -} - -function checkExpressionStatement (st, node) { - st.equal(node.expression.nodeType, 'Assignment') - st.equal(node.expression.operator, '=') - st.equal(node.expression.typeDescriptions.typeString, 'int256') - st.equal(node.expression.leftHandSide.nodeType, 'Identifier') - st.equal(node.expression.leftHandSide.name, 'x') - st.equal(node.expression.rightHandSide.nodeType, 'Identifier') - st.equal(node.expression.rightHandSide.name, '_x') -}