more formalization

pull/4073/head
aniket-engg 1 year ago committed by Aniket
parent 8d72137073
commit 300ccd5dfb
  1. 4
      apps/remix-ide/src/blockchain/blockchain.tsx
  2. 15
      libs/remix-lib/src/execution/txExecution.ts

@ -944,7 +944,7 @@ export class Blockchain extends Plugin {
? toBuffer(execResult.returnValue)
: toBuffer(addHexPrefix(txResult.result) || '0x0000000000000000000000000000000000000000000000000000000000000000')
const compiledContracts = await this.call('compilerArtefacts', 'getAllContractDatas')
const vmError = txExecution.checkError(execResult, compiledContracts, false)
const vmError = txExecution.checkError({ errorMessage: execResult.exceptionError, errorData: execResult.returnValue }, compiledContracts)
if (vmError.error) {
return cb(vmError.message)
}
@ -966,7 +966,7 @@ export class Blockchain extends Plugin {
errorObj = JSON.parse(errorObj)
if (errorObj.errorData) {
const compiledContracts = await this.call('compilerArtefacts', 'getAllContractDatas')
const injectedError = txExecution.checkError(errorObj, compiledContracts, true)
const injectedError = txExecution.checkError({ errorMessage: errorObj.error, errorData: errorObj.errorData }, compiledContracts)
cb(injectedError.message)
} else
cb(error)

@ -54,12 +54,11 @@ export function callFunction (from, to, data, value, gasLimit, funAbi, txRunner,
/**
* check if the vm has errored
*
* @param {Object} execResult - execution result given by the VM
* @param {Object} execResult - execution result given by the VM, contain errorMessage and errorDate
* @param {Object} compiledContracts - Object containing contract compilation details
* @param {boolean} isInjectedWeb3 - If true, provider is set to injected web3
* @return {Object} - { error: true/false, message: DOMNode }
*/
export function checkError (execResult, compiledContracts, isInjectedWeb3) {
export function checkError (execResult, compiledContracts) {
const errorCode = {
OUT_OF_GAS: 'out of gas',
STACK_UNDERFLOW: 'stack underflow',
@ -77,11 +76,11 @@ export function checkError (execResult, compiledContracts, isInjectedWeb3) {
error: false,
message: ''
}
if (!execResult.exceptionError && !isInjectedWeb3) {
if (!execResult.errorMessage) {
return ret
}
const exceptionError = (execResult.exceptionError && execResult.exceptionError.error) || ''
const error = `Error occured: ${isInjectedWeb3 ? execResult.error : exceptionError}.\n`
const exceptionError = execResult.errorMessage || ''
const error = `Error occured: ${execResult.errorMessage}.\n`
let msg
if (exceptionError === errorCode.INVALID_OPCODE) {
msg = '\t\n\tThe execution might have thrown.\n'
@ -89,8 +88,8 @@ export function checkError (execResult, compiledContracts, isInjectedWeb3) {
} else if (exceptionError === errorCode.OUT_OF_GAS) {
msg = '\tThe transaction ran out of gas. Please increase the Gas Limit.\n'
ret.error = true
} else if (exceptionError === errorCode.REVERT || (isInjectedWeb3 && execResult.error === 'execution reverted')) {
const returnData = isInjectedWeb3 ? execResult.errorData : execResult.returnValue
} else if (exceptionError === errorCode.REVERT || exceptionError === 'execution reverted') {
const returnData = execResult.errorData
const returnDataHex = returnData.slice(2, 10)
let customError
if (compiledContracts) {

Loading…
Cancel
Save