aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/solidity.js
diff options
context:
space:
mode:
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'])
: {};