Unverified Commit 0674d266 authored by yann300's avatar yann300 Committed by GitHub

Merge pull request #2087 from ethereum/Yul

Select Yul compiler
parents f4d9507c c1e3fbf9
...@@ -47,13 +47,19 @@ class CompileTab { ...@@ -47,13 +47,19 @@ class CompileTab {
} }
/** /**
* Set the compiler to using Solidity or Yul (default to Solidity)
* @params lang {'Solidity' | 'Yul'} ...
*/
setLanguage (lang) {
this.compiler.setLanguage(lang)
}
/**
* Compile a specific file of the file manager * Compile a specific file of the file manager
* @param {string} target the path to the file to compile * @param {string} target the path to the file to compile
*/ */
compileFile (target) { compileFile (target) {
if (!target) throw new Error('No target provided for compiliation') if (!target) throw new Error('No target provided for compiliation')
if (!/\.sol/.exec(target)) throw new Error(`${target} is not a solidity file. It cannot be compiled with solidity compiler`)
// only compile *.sol file.
const provider = this.fileManager.fileProviderOf(target) const provider = this.fileManager.fileProviderOf(target)
if (!provider) throw new Error(`cannot compile ${target}. Does not belong to any explorer`) if (!provider) throw new Error(`cannot compile ${target}. Does not belong to any explorer`)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
......
...@@ -175,6 +175,17 @@ class CompilerContainer { ...@@ -175,6 +175,17 @@ class CompilerContainer {
${this._view.versionSelector} ${this._view.versionSelector}
</div> </div>
</div> </div>
<div class="row w-100 no-gutters mb-2">
<div class="col-sm-4">
<label class="input-group-text border-0" for="languageSelector">Language</label>
</div>
<div class="col-sm-8">
<select onchange="${this.onchangeLanguage.bind(this)}" class="custom-select" id="languageSelector">
<option>Solidity</option>
<option>Yul</option>
</select>
</div>
</div>
<div class="row w-100 no-gutters"> <div class="row w-100 no-gutters">
<div class="col-sm-4"> <div class="col-sm-4">
<label class="input-group-text border-0" for="evmVersionSelector">EVM Version</label> <label class="input-group-text border-0" for="evmVersionSelector">EVM Version</label>
...@@ -227,6 +238,11 @@ class CompilerContainer { ...@@ -227,6 +238,11 @@ class CompilerContainer {
this.compileTabLogic.runCompiler() this.compileTabLogic.runCompiler()
} }
onchangeLanguage (event) {
this.compileTabLogic.setLanguage(event.target.value)
this.compile()
}
onchangeEvmVersion (_) { onchangeEvmVersion (_) {
let s = this._view.evmVersionSelector let s = this._view.evmVersionSelector
let v = s.value let v = s.value
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment