From 8a5f68abbb89f097b448e3c9e230fb827aefa17d Mon Sep 17 00:00:00 2001 From: cgewecke Date: Sun, 24 Apr 2022 15:35:19 -0700 Subject: [PATCH] Add support for `UncheckedStatement` blocks --- lib/parse.js | 5 +++++ .../projects/solc-8/contracts/Contract_solc8.sol | 10 ++++++++++ test/integration/projects/solc-8/test/test_solc8.js | 4 ++++ test/units/hardhat/standard.js | 2 +- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/parse.js b/lib/parse.js index 4845a4fe..c6a79897 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -239,6 +239,11 @@ parse.TryStatement = function(contract, expression) { } }; +parse.UncheckedStatement = function(contract, expression) { + parse[expression.block.type] && + parse[expression.block.type](contract, expression.block); +} + parse.UsingStatement = function (contract, expression) { parse[expression.for.type] && parse[expression.for.type](contract, expression.for); diff --git a/test/integration/projects/solc-8/contracts/Contract_solc8.sol b/test/integration/projects/solc-8/contracts/Contract_solc8.sol index 90e83931..80c1662f 100644 --- a/test/integration/projects/solc-8/contracts/Contract_solc8.sol +++ b/test/integration/projects/solc-8/contracts/Contract_solc8.sol @@ -17,4 +17,14 @@ contract ContractA { someAddress = _add; } + + function checkSomething() external { + uint a = 5; + + unchecked { + a++; + } + + unchecked {} + } } diff --git a/test/integration/projects/solc-8/test/test_solc8.js b/test/integration/projects/solc-8/test/test_solc8.js index 617c2bd9..ad2f07ed 100644 --- a/test/integration/projects/solc-8/test/test_solc8.js +++ b/test/integration/projects/solc-8/test/test_solc8.js @@ -10,4 +10,8 @@ contract("contracta", function(accounts) { it('a:throwError', async function(){ await a.throwError(a.address); }); + + it('a:checkSomething', async function(){ + await a.checkSomething(); + }) }); diff --git a/test/units/hardhat/standard.js b/test/units/hardhat/standard.js index bf0a725e..a835bb0f 100644 --- a/test/units/hardhat/standard.js +++ b/test/units/hardhat/standard.js @@ -335,7 +335,7 @@ describe('Hardhat Plugin: standard use cases', function() { const expectedLine = [ { file: mock.pathToContract(hardhatConfig, 'Contract_solc8.sol'), - pct: 75 + pct: 87.5 }, ];