From a36546bc6c7c3ddbd95fadc705c262df98a6d6a1 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Wed, 28 Oct 2020 13:58:31 -0300 Subject: [PATCH] avoid counting `immutable` for the `max-state-count` rule --- lib/rules/best-practises/max-states-count.js | 4 +++- test/rules/best-practises/max-states-count.js | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/rules/best-practises/max-states-count.js b/lib/rules/best-practises/max-states-count.js index cd59ca31..70826626 100644 --- a/lib/rules/best-practises/max-states-count.js +++ b/lib/rules/best-practises/max-states-count.js @@ -55,7 +55,9 @@ class MaxStatesCountChecker extends BaseChecker { ContractDefinition(node) { const countOfVars = _(node.subNodes) .filter(({ type }) => type === 'StateVariableDeclaration') - .flatMap(subNode => subNode.variables.filter(variable => !variable.isDeclaredConst)) + .flatMap(({ variables }) => + variables.filter(({ isDeclaredConst, isImmutable }) => !isDeclaredConst && !isImmutable) + ) .value().length if (countOfVars > this.maxStatesCount) { diff --git a/test/rules/best-practises/max-states-count.js b/test/rules/best-practises/max-states-count.js index 6a8fdc62..079328c7 100644 --- a/test/rules/best-practises/max-states-count.js +++ b/test/rules/best-practises/max-states-count.js @@ -45,4 +45,18 @@ describe('Linter - max-states-count', () => { assertNoErrors(report) }) + + it('should not count immutable variables', () => { + const code = contractWith(` + uint public immutable a; + uint public b; + uint public c; + + function f() {} + `) + + const report = linter.processStr(code, { rules: { 'max-states-count': ['error', 2] } }) + + assertNoErrors(report) + }) })