|
|
@ -32,6 +32,9 @@ class CompilerContainer { |
|
|
|
* Update the compilation button with the name of the current file |
|
|
|
* Update the compilation button with the name of the current file |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
set currentFile (name = '') { |
|
|
|
set currentFile (name = '') { |
|
|
|
|
|
|
|
if (name && name !== '') { |
|
|
|
|
|
|
|
this._setCompilerVersionFromPragma(name) |
|
|
|
|
|
|
|
} |
|
|
|
if (!this._view.compilationButton) return |
|
|
|
if (!this._view.compilationButton) return |
|
|
|
const button = this.compilationButton(name.split('/').pop()) |
|
|
|
const button = this.compilationButton(name.split('/').pop()) |
|
|
|
yo.update(this._view.compilationButton, button) |
|
|
|
yo.update(this._view.compilationButton, button) |
|
|
@ -113,6 +116,24 @@ class CompilerContainer { |
|
|
|
return el |
|
|
|
return el |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Load solc compiler version according to pragma in contract file
|
|
|
|
|
|
|
|
_setCompilerVersionFromPragma (filename) { |
|
|
|
|
|
|
|
this.compileTabLogic.fileManager.getFile(filename).then(data => { |
|
|
|
|
|
|
|
const pragmaArr = data.match(/(pragma solidity (.+?);)/g) |
|
|
|
|
|
|
|
if (pragmaArr && pragmaArr.length === 1) { |
|
|
|
|
|
|
|
const pragmaStr = pragmaArr[0].replace('pragma solidity', '').trim() |
|
|
|
|
|
|
|
const pragma = pragmaStr.substring(0, pragmaStr.length - 1) |
|
|
|
|
|
|
|
const fixedVersions = this.data.allversions.filter(obj => !obj.prerelease).map(obj => obj.version) |
|
|
|
|
|
|
|
const compilerToLoad = semver.maxSatisfying(fixedVersions, pragma) |
|
|
|
|
|
|
|
const compilerPath = this.data.allversions.filter(obj => !obj.prerelease && obj.version === compilerToLoad)[0].path |
|
|
|
|
|
|
|
if (this.data.selectedVersion !== compilerPath) { |
|
|
|
|
|
|
|
this.data.selectedVersion = compilerPath |
|
|
|
|
|
|
|
this._updateVersionSelector() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_retrieveVersion () { |
|
|
|
_retrieveVersion () { |
|
|
|
let version = this._view.versionSelector.value |
|
|
|
let version = this._view.versionSelector.value |
|
|
|
return version.substring(9, version.length) |
|
|
|
return version.substring(9, version.length) |
|
|
@ -243,6 +264,9 @@ class CompilerContainer { |
|
|
|
|
|
|
|
|
|
|
|
compile (event) { |
|
|
|
compile (event) { |
|
|
|
if (this.config.get('currentFile')) { |
|
|
|
if (this.config.get('currentFile')) { |
|
|
|
|
|
|
|
if (!this.data.selectedVersion.includes('nightly')) { |
|
|
|
|
|
|
|
this._setCompilerVersionFromPragma(this.config.get('currentFile')) |
|
|
|
|
|
|
|
} |
|
|
|
this.compileTabLogic.runCompiler() |
|
|
|
this.compileTabLogic.runCompiler() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|