pickup compiler version from pragma

checks improved

support for fixed pragma version

range pragma handled

suggested changes

linting fix

load compiler before compilation too

if statement removed

using semver

nightly build support

linting fix
pull/1/head
Aniket-Engg 5 years ago
parent 244ba6c8b7
commit db94d92811
  1. 23
      src/app/tabs/compileTab/compilerContainer.js

@ -32,6 +32,9 @@ class CompilerContainer {
* Update the compilation button with the name of the current file
*/
set currentFile (name = '') {
if (name && name !== '') {
this._setCompilerVersionFromPragma(name)
}
if (!this._view.compilationButton) return
const button = this.compilationButton(name.split('/').pop())
yo.update(this._view.compilationButton, button)
@ -113,6 +116,23 @@ class CompilerContainer {
return el
}
_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 () {
let version = this._view.versionSelector.value
return version.substring(9, version.length)
@ -243,6 +263,9 @@ class CompilerContainer {
compile (event) {
if (this.config.get('currentFile')) {
if (!this.data.selectedVersion.includes('nightly')) {
this._setCompilerVersionFromPragma(this.config.get('currentFile'))
}
this.compileTabLogic.runCompiler()
}
}

Loading…
Cancel
Save