From ca458152a6584e74083a9c9f2f531a49d5d088a6 Mon Sep 17 00:00:00 2001 From: cgewecke Date: Fri, 29 Nov 2019 19:34:16 -0800 Subject: [PATCH] Add imports only test, fix instrumenter --- lib/instrumenter.js | 6 +++++- .../import-paths/contracts/OnlyUsesImports.sol | 5 +++++ .../node_modules/package/AnotherImport.sol | 10 ++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/integration/projects/import-paths/contracts/OnlyUsesImports.sol create mode 100644 test/integration/projects/import-paths/node_modules/package/AnotherImport.sol diff --git a/lib/instrumenter.js b/lib/instrumenter.js index 42b6a6ee..4c91e775 100644 --- a/lib/instrumenter.js +++ b/lib/instrumenter.js @@ -70,7 +70,11 @@ class Instrumenter { // Walk the AST, recording injection points ast = SolidityParser.parse(contract.instrumented, {range: true}); - contract.contractName = ast.children.filter(node => this._isRootNode(node))[0].name; + + const root = ast.children.filter(node => this._isRootNode(node)); + + // Handle contracts which only contain import statements + contract.contractName = (root.length) ? root[0].name : null; parse[ast.type](contract, ast); // We have to iterate through these points in descending order diff --git a/test/integration/projects/import-paths/contracts/OnlyUsesImports.sol b/test/integration/projects/import-paths/contracts/OnlyUsesImports.sol new file mode 100644 index 00000000..ceb4c417 --- /dev/null +++ b/test/integration/projects/import-paths/contracts/OnlyUsesImports.sol @@ -0,0 +1,5 @@ +pragma solidity >=0.4.21 <0.6.0; + +import "package/AnotherImport.sol"; + +interface Void {} diff --git a/test/integration/projects/import-paths/node_modules/package/AnotherImport.sol b/test/integration/projects/import-paths/node_modules/package/AnotherImport.sol new file mode 100644 index 00000000..caba5cda --- /dev/null +++ b/test/integration/projects/import-paths/node_modules/package/AnotherImport.sol @@ -0,0 +1,10 @@ +pragma solidity >=0.4.21 <0.6.0; + +contract AnotherImport { + uint x; + constructor() public {} + + function isNodeModulesMethod() public { + x = 5; + } +} \ No newline at end of file