From 8d6c014fda2480f2932d7e836406bf39b1fb8b27 Mon Sep 17 00:00:00 2001 From: Rory Date: Fri, 27 Aug 2021 16:38:36 +1000 Subject: [PATCH] Adding helper method for checking compiler language before setting --- libs/remix-lib/src/helpers/compilerHelper.ts | 12 ++++++++ libs/remix-lib/test/compilerHelper.ts | 29 +++++++++++++++++++ libs/remix-lib/test/tests.ts | 1 + .../src/lib/logic/compileTabLogic.ts | 13 ++++----- 4 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 libs/remix-lib/test/compilerHelper.ts diff --git a/libs/remix-lib/src/helpers/compilerHelper.ts b/libs/remix-lib/src/helpers/compilerHelper.ts index 1681520c95..124c71fcc5 100644 --- a/libs/remix-lib/src/helpers/compilerHelper.ts +++ b/libs/remix-lib/src/helpers/compilerHelper.ts @@ -1,3 +1,5 @@ +import {Language} from "@remix-project/remix-solidity-ts"; + export function compilerInput (contracts) { return JSON.stringify({ language: 'Solidity', @@ -20,3 +22,13 @@ export function compilerInput (contracts) { } }) } + +export const Languages = ['Solidity', 'Yul'] + +export function getValidLanguage (val: string): Language { + if (val !== undefined && val !== null && val) { + const lang = val.slice(0, 1).toUpperCase() + val.slice(1).toLowerCase() + return Languages.indexOf(lang) > -1 ? lang as Language : null + } + return null +} diff --git a/libs/remix-lib/test/compilerHelper.ts b/libs/remix-lib/test/compilerHelper.ts new file mode 100644 index 0000000000..27a05842db --- /dev/null +++ b/libs/remix-lib/test/compilerHelper.ts @@ -0,0 +1,29 @@ +'use strict' +import tape from 'tape' +import { getValidLanguage } from "../src/helpers/compilerHelper"; +import { Language } from "@remix-project/remix-solidity-ts"; + +tape('compilerHelper', function (t) { + t.test('lowerbound', function (st) { + st.plan(9) + + const correctYul: Language = 'Yul'; + const correctSolidity: Language = 'Solidity'; + + const yulUpperCase = 'Yul' + const yulLowerCase = 'yul' + + const solidityUpperCase = 'Solidity' + const solidityLowerCase = 'solidity' + + st.equal(getValidLanguage(yulLowerCase), correctYul) + st.equal(getValidLanguage(yulUpperCase), correctYul) + st.equal(getValidLanguage(solidityUpperCase), correctSolidity) + st.equal(getValidLanguage(solidityLowerCase), correctSolidity) + st.equal(getValidLanguage(null), null) + st.equal(getValidLanguage(undefined), null) + st.equal(getValidLanguage(''), null) + st.equal(getValidLanguage('A'), null) + st.equal(getValidLanguage('Something'), null) + }) +}) diff --git a/libs/remix-lib/test/tests.ts b/libs/remix-lib/test/tests.ts index 2921875905..3c8178a587 100644 --- a/libs/remix-lib/test/tests.ts +++ b/libs/remix-lib/test/tests.ts @@ -3,3 +3,4 @@ require('./util.ts') require('./txFormat.ts') require('./txHelper.ts') require('./txResultHelper.ts') +require('./compilerHelper.ts') diff --git a/libs/remix-ui/solidity-compiler/src/lib/logic/compileTabLogic.ts b/libs/remix-ui/solidity-compiler/src/lib/logic/compileTabLogic.ts index db24685e3a..7441194206 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/logic/compileTabLogic.ts +++ b/libs/remix-ui/solidity-compiler/src/lib/logic/compileTabLogic.ts @@ -1,4 +1,5 @@ import { ICompilerApi } from '@remix-project/remix-lib-ts' +import { helpers } from '@remix-project/remix-lib' const Compiler = require('@remix-project/remix-solidity').Compiler const EventEmitter = require('events') @@ -41,12 +42,10 @@ export class CompileTabLogic { this.api.setCompilerParameters({ evmVersion: this.evmVersion }) this.compiler.set('evmVersion', this.evmVersion) - this.language = this.api.getParameters().language - if(this.language === 'undefined' || this.language === 'null' || !this.language) { - this.language = null + this.language = helpers.compiler.getValidLanguage(this.api.getCompilerParameters().language) + if (this.language != null) { + this.compiler.set('language', this.language) } - this.api.setParameters({ 'language': this.language }) - this.compiler.set('language', this.language) } setOptimize (newOptimizeValue) { @@ -76,8 +75,8 @@ export class CompileTabLogic { * @params lang {'Solidity' | 'Yul'} ... */ setLanguage (lang) { - this.language = lang; - this.api.setParameters({ language: lang }) + this.language = lang + this.api.setCompilerParameters({ language: lang }) this.compiler.set('language', lang) }