diff --git a/remix-analyzer/src/solidity-analyzer/modules/staticAnalysisCommon.ts b/remix-analyzer/src/solidity-analyzer/modules/staticAnalysisCommon.ts index 0b7e5ae793..2d3297c906 100644 --- a/remix-analyzer/src/solidity-analyzer/modules/staticAnalysisCommon.ts +++ b/remix-analyzer/src/solidity-analyzer/modules/staticAnalysisCommon.ts @@ -3,7 +3,7 @@ import { FunctionDefinitionAstNode, ModifierDefinitionAstNode, ParameterListAstNode, ForStatementAstNode, WhileStatementAstNode, VariableDeclarationAstNode, ContractDefinitionAstNode, InheritanceSpecifierAstNode, MemberAccessAstNode, BinaryOperationAstNode, FunctionCallAstNode, ExpressionStatementAstNode, UnaryOperationAstNode, - IdentifierAstNode, IndexAccessAstNode, BlockAstNode, AssignmentAstNode, InlineAssemblyAstNode, IfStatementAstNode, CompiledContractObj, ABIParameter } from "types" + IdentifierAstNode, IndexAccessAstNode, BlockAstNode, AssignmentAstNode, InlineAssemblyAstNode, IfStatementAstNode, CompiledContractObj, ABIParameter, CompilationResult, CompiledContract } from "types" import { util } from 'remix-lib' type SpecialObjDetail = { @@ -1122,6 +1122,17 @@ function getTypeStringFromComponents(components: ABIParameter[]) { return typeString } +function getCompilerVersion(contractFiles: CompiledContractObj): string { + const fileNames: string[] = Object.keys(contractFiles) + const contracts = contractFiles[fileNames[0]] + const contractNames: string[] = Object.keys(contracts) + const contract: CompiledContract = contracts[contractNames[0]] + const metadata = JSON.parse(contract.metadata) + const compilerVersion: string = metadata.compiler.version + if(!compilerVersion.includes('nightly')) return 'v' + compilerVersion.split('+commit')[0] + else return 'develop' +} + const helpers = { expressionTypeDescription, nodeType, @@ -1158,6 +1169,7 @@ export { getFunctionDefinitionReturnParameterPart, getUnAssignedTopLevelBinOps, getMethodParamsSplittedTypeDesc, + getCompilerVersion, // #################### Complex Node Identification isDeleteOfDynamicArray, diff --git a/remix-analyzer/src/types.ts b/remix-analyzer/src/types.ts index 7352f72cf5..ffc70d8346 100644 --- a/remix-analyzer/src/types.ts +++ b/remix-analyzer/src/types.ts @@ -8,6 +8,11 @@ export interface AnalyzerModule { report: ReportFunction } +// This version signifies the module support for Solidity version. +// start will be minimum at 0.4.12 as since that version Solidity exports latest AST +// end should be a version in which analysis feature got deprecated. +// This will be helpful in version based analysis in future. + export interface SupportedVersion { start: string end?: string