From d54c39607e2ac68d07e106f0cc35b78cd173ec18 Mon Sep 17 00:00:00 2001 From: Leonardo Alt Date: Tue, 17 Apr 2018 17:36:13 +0200 Subject: [PATCH] Fix 'potentially should be const' for constructors in static analysis --- .../src/analysis/modules/constantFunctions.js | 2 +- .../src/analysis/modules/staticAnalysisCommon.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/remix-solidity/src/analysis/modules/constantFunctions.js b/remix-solidity/src/analysis/modules/constantFunctions.js index d397f00c7b..82750772ea 100644 --- a/remix-solidity/src/analysis/modules/constantFunctions.js +++ b/remix-solidity/src/analysis/modules/constantFunctions.js @@ -34,7 +34,7 @@ function report (contracts, multipleContractsWithSameName) { contracts.forEach((contract) => { contract.functions.forEach((func) => { - if (common.isPayableFunction(func.node)) { + if (common.isPayableFunction(func.node) || common.isConstructor(func.node)) { func.potentiallyshouldBeConst = false } else { func.potentiallyshouldBeConst = checkIfShouldBeConstant(common.getFullQuallyfiedFuncDefinitionIdent(contract.node, func.node, func.parameters), diff --git a/remix-solidity/src/analysis/modules/staticAnalysisCommon.js b/remix-solidity/src/analysis/modules/staticAnalysisCommon.js index 439a1fb849..e9fc7fce4c 100644 --- a/remix-solidity/src/analysis/modules/staticAnalysisCommon.js +++ b/remix-solidity/src/analysis/modules/staticAnalysisCommon.js @@ -520,6 +520,17 @@ function isPayableFunction (node) { ) } +/** + * True if is constructor + * @node {ASTNode} some AstNode + * @return {bool} + */ +function isConstructor (node) { + return isFunctionDefinition(node) && ( + node.attributes.isConstructor === true + ) +} + /** * True if unary increment operation * @node {ASTNode} some AstNode @@ -857,6 +868,7 @@ module.exports = { isContractDefinition: isContractDefinition, isConstantFunction: isConstantFunction, isPayableFunction: isPayableFunction, + isConstructor: isConstructor, isInlineAssembly: isInlineAssembly, isNewExpression: isNewExpression, isReturn: isReturn,