diff --git a/lib/parse.js b/lib/parse.js index 1d6c9be0..979d245f 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -217,9 +217,11 @@ parse.Modifiers = function(contract, modifiers) { }; parse.ModifierDefinition = function(contract, expression) { - register.functionDeclaration(contract, expression); - parse[expression.body.type] && - parse[expression.body.type](contract, expression.body); + if (expression.body) { + register.functionDeclaration(contract, expression); + parse[expression.body.type] && + parse[expression.body.type](contract, expression.body); + } }; parse.NewExpression = function(contract, expression) { diff --git a/test/integration/projects/solc-8/contracts/Abstract_solc8.sol b/test/integration/projects/solc-8/contracts/Abstract_solc8.sol new file mode 100644 index 00000000..bb178280 --- /dev/null +++ b/test/integration/projects/solc-8/contracts/Abstract_solc8.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.0 <0.9.0; + +abstract contract ContractB { + modifier onlyOwner() virtual; +}