UNPKG

hardhat

Version:

Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

59 lines 3.65 kB
import { panicErrorCodeToMessage } from "@nomicfoundation/hardhat-utils/panic-errors"; import { StackTraceEntryType } from "../network-manager/edr/stack-traces/solidity-stack-trace.js"; export function getMessageFromLastStackTraceEntry(stackTraceEntry) { switch (stackTraceEntry.type) { case StackTraceEntryType.PRECOMPILE_ERROR: return `Call to precompile ${stackTraceEntry.precompile} failed`; case StackTraceEntryType.FUNCTION_NOT_PAYABLE_ERROR: return `Non-payable function was called with value ${stackTraceEntry.value.toString(10)}`; case StackTraceEntryType.INVALID_PARAMS_ERROR: return `Function was called with incorrect parameters`; case StackTraceEntryType.FALLBACK_NOT_PAYABLE_ERROR: return `Fallback function is not payable and was called with value ${stackTraceEntry.value.toString(10)}`; case StackTraceEntryType.FALLBACK_NOT_PAYABLE_AND_NO_RECEIVE_ERROR: return `There's no receive function, fallback function is not payable and was called with value ${stackTraceEntry.value.toString(10)}`; case StackTraceEntryType.UNRECOGNIZED_FUNCTION_WITHOUT_FALLBACK_ERROR: return `Function selector was not recognized and there's no fallback function`; case StackTraceEntryType.MISSING_FALLBACK_OR_RECEIVE_ERROR: return `Function selector was not recognized and there's no fallback nor receive function`; case StackTraceEntryType.RETURNDATA_SIZE_ERROR: return `Function returned an unexpected amount of data`; case StackTraceEntryType.NONCONTRACT_ACCOUNT_CALLED_ERROR: return `Function call to a non-contract account`; case StackTraceEntryType.CALL_FAILED_ERROR: return `Function call failed to execute`; case StackTraceEntryType.DIRECT_LIBRARY_CALL_ERROR: return `Library was called directly`; /* These types are not associate with a more detailed error message */ case StackTraceEntryType.UNRECOGNIZED_CREATE_ERROR: case StackTraceEntryType.UNRECOGNIZED_CONTRACT_ERROR: { return undefined; } /* These types are not associate with a more detailed error message */ case StackTraceEntryType.REVERT_ERROR: { return undefined; } case StackTraceEntryType.PANIC_ERROR: return panicErrorCodeToMessage(stackTraceEntry.errorCode); case StackTraceEntryType.CUSTOM_ERROR: return stackTraceEntry.message; case StackTraceEntryType.CHEATCODE_ERROR: return stackTraceEntry.message; case StackTraceEntryType.CONTRACT_TOO_LARGE_ERROR: return "Trying to deploy a contract whose code is too large"; case StackTraceEntryType.CONTRACT_CALL_RUN_OUT_OF_GAS_ERROR: return "Contract call run out of gas"; /* These types are not associate with a more detailed error message */ case StackTraceEntryType.UNMAPPED_SOLC_0_6_3_REVERT_ERROR: case StackTraceEntryType.OTHER_EXECUTION_ERROR: return undefined; /* These types are not expected to be the last entry in the stack trace, as their presence indicates that another frame should follow in the call stack. */ case StackTraceEntryType.CALLSTACK_ENTRY: case StackTraceEntryType.UNRECOGNIZED_CREATE_CALLSTACK_ENTRY: case StackTraceEntryType.UNRECOGNIZED_CONTRACT_CALLSTACK_ENTRY: case StackTraceEntryType.INTERNAL_FUNCTION_CALLSTACK_ENTRY: return undefined; } } //# sourceMappingURL=stack-trace-solidity-errors.js.map