diff options
author | Rubén Rincón Blanco <ruben@rinconblanco.es> | 2022-04-26 15:24:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-26 15:24:40 +0200 |
commit | 4965bd6c8101001dd124df38b3da43cdc2c360a4 (patch) | |
tree | 4d7e8133219f88e3e6361cceea9bebb84b62ab02 /lib/compilers/solidity.js | |
parent | e3b9039095333ae3cdec1b9f47419ebac33b6fec (diff) | |
download | compiler-explorer-4965bd6c8101001dd124df38b3da43cdc2c360a4.tar.gz compiler-explorer-4965bd6c8101001dd124df38b3da43cdc2c360a4.zip |
All semver comparisons now ensure it's safe to do so (#3562)
* All semver comparisons now ensure it's safe to do so
* Oops, use correct class
* Remove leftover import
* Leave the Zig fixes for another PR
* Fix linter
* Fix test issues
* Make linter happy, yet again
* What?
* Address PR review
Diffstat (limited to 'lib/compilers/solidity.js')
-rw-r--r-- | lib/compilers/solidity.js | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/compilers/solidity.js b/lib/compilers/solidity.js index fd926742d..a8e654d8e 100644 --- a/lib/compilers/solidity.js +++ b/lib/compilers/solidity.js @@ -25,7 +25,10 @@ import * as fs from 'fs'; import path from 'path'; +import Semver from 'semver'; + import {BaseCompiler} from '../base-compiler'; +import {asSafeVer} from '../utils'; import {ClangParser} from './argument-parsers'; @@ -46,7 +49,9 @@ export class SolidityCompiler extends BaseCompiler { return [ // We use --combined-json instead of `--asm-json` to have compacted json '--combined-json', - this.compiler.semver.split('.')[1] < 8 ? 'asm,ast' : 'asm,ast,generated-sources,generated-sources-runtime', + Semver.lt(asSafeVer(this.compiler.semver), '0.8.0', true) + ? 'asm,ast' + : 'asm,ast,generated-sources,generated-sources-runtime', '-o', 'contracts', ]; @@ -78,9 +83,8 @@ export class SolidityCompiler extends BaseCompiler { } return line; }); - - let compilerVersion = {}; - [compilerVersion.major, compilerVersion.minor, compilerVersion.patch] = this.compiler.semver.split('.'); + const hasOldJSONLayout = Semver.lt(asSafeVer(this.compiler.semver), '0.8.0', true); + const hasGeneratedSources = Semver.gte(asSafeVer(this.compiler.semver), '0.8.0', true); const asm = JSON.parse(result.asm); return { @@ -97,7 +101,7 @@ export class SolidityCompiler extends BaseCompiler { // range of characters belongs to each function. let contractFunctions; // the layout of this JSON has changed between versions... - if (compilerVersion.major === 0 && compilerVersion.minor < 8) { + if (hasOldJSONLayout) { contractFunctions = asm.sources[sourceName].AST.children .find(node => { return node.name === 'ContractDefinition' && node.attributes.name === contractName; @@ -186,7 +190,7 @@ export class SolidityCompiler extends BaseCompiler { // there are two sets of generated sources, one for the code which deploys // the contract (i.e. the constructor) 'generated-sources', and the code // which is deployed and stored on-chain 'generated-sources-runtime' - const hasGeneratedSources = compilerVersion.major > 0 || compilerVersion.minor > 7; + const generatedSources = hasGeneratedSources ? processGeneratedSources(data['generated-sources']) : {}; |