aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/solidity.js
diff options
context:
space:
mode:
authorRubén Rincón Blanco <ruben@rinconblanco.es>2022-04-26 15:24:40 +0200
committerGitHub <noreply@github.com>2022-04-26 15:24:40 +0200
commit4965bd6c8101001dd124df38b3da43cdc2c360a4 (patch)
tree4d7e8133219f88e3e6361cceea9bebb84b62ab02 /lib/compilers/solidity.js
parente3b9039095333ae3cdec1b9f47419ebac33b6fec (diff)
downloadcompiler-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.js16
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'])
: {};