mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use different error code for various EVM features in Yul
This commit is contained in:
parent
3d96e2b11a
commit
d211a45aa4
@ -558,9 +558,9 @@ bool AsmAnalyzer::warnOnInstructions(evmasm::Instruction _instr, SourceLocation
|
|||||||
// Similarly we assume bitwise shifting and create2 go together.
|
// Similarly we assume bitwise shifting and create2 go together.
|
||||||
yulAssert(m_evmVersion.hasBitwiseShifting() == m_evmVersion.hasCreate2(), "");
|
yulAssert(m_evmVersion.hasBitwiseShifting() == m_evmVersion.hasCreate2(), "");
|
||||||
|
|
||||||
auto errorForVM = [&](string const& vmKindMessage) {
|
auto errorForVM = [&](ErrorId _errorId, string const& vmKindMessage) {
|
||||||
m_errorReporter.typeError(
|
m_errorReporter.typeError(
|
||||||
7079_error,
|
_errorId,
|
||||||
_location,
|
_location,
|
||||||
"The \"" +
|
"The \"" +
|
||||||
boost::to_lower_copy(instructionInfo(_instr).name)
|
boost::to_lower_copy(instructionInfo(_instr).name)
|
||||||
@ -577,21 +577,21 @@ bool AsmAnalyzer::warnOnInstructions(evmasm::Instruction _instr, SourceLocation
|
|||||||
_instr == evmasm::Instruction::RETURNDATACOPY ||
|
_instr == evmasm::Instruction::RETURNDATACOPY ||
|
||||||
_instr == evmasm::Instruction::RETURNDATASIZE
|
_instr == evmasm::Instruction::RETURNDATASIZE
|
||||||
) && !m_evmVersion.supportsReturndata())
|
) && !m_evmVersion.supportsReturndata())
|
||||||
errorForVM("only available for Byzantium-compatible");
|
errorForVM(7756_error, "only available for Byzantium-compatible");
|
||||||
else if (_instr == evmasm::Instruction::STATICCALL && !m_evmVersion.hasStaticCall())
|
else if (_instr == evmasm::Instruction::STATICCALL && !m_evmVersion.hasStaticCall())
|
||||||
errorForVM("only available for Byzantium-compatible");
|
errorForVM(1503_error, "only available for Byzantium-compatible");
|
||||||
else if ((
|
else if ((
|
||||||
_instr == evmasm::Instruction::SHL ||
|
_instr == evmasm::Instruction::SHL ||
|
||||||
_instr == evmasm::Instruction::SHR ||
|
_instr == evmasm::Instruction::SHR ||
|
||||||
_instr == evmasm::Instruction::SAR
|
_instr == evmasm::Instruction::SAR
|
||||||
) && !m_evmVersion.hasBitwiseShifting())
|
) && !m_evmVersion.hasBitwiseShifting())
|
||||||
errorForVM("only available for Constantinople-compatible");
|
errorForVM(6612_error, "only available for Constantinople-compatible");
|
||||||
else if (_instr == evmasm::Instruction::CREATE2 && !m_evmVersion.hasCreate2())
|
else if (_instr == evmasm::Instruction::CREATE2 && !m_evmVersion.hasCreate2())
|
||||||
errorForVM("only available for Constantinople-compatible");
|
errorForVM(6166_error, "only available for Constantinople-compatible");
|
||||||
else if (_instr == evmasm::Instruction::EXTCODEHASH && !m_evmVersion.hasExtCodeHash())
|
else if (_instr == evmasm::Instruction::EXTCODEHASH && !m_evmVersion.hasExtCodeHash())
|
||||||
errorForVM("only available for Constantinople-compatible");
|
errorForVM(7110_error, "only available for Constantinople-compatible");
|
||||||
else if (_instr == evmasm::Instruction::CHAINID && !m_evmVersion.hasChainID())
|
else if (_instr == evmasm::Instruction::CHAINID && !m_evmVersion.hasChainID())
|
||||||
errorForVM("only available for Istanbul-compatible");
|
errorForVM(1561_error, "only available for Istanbul-compatible");
|
||||||
else if (_instr == evmasm::Instruction::PC)
|
else if (_instr == evmasm::Instruction::PC)
|
||||||
m_errorReporter.warning(
|
m_errorReporter.warning(
|
||||||
2450_error,
|
2450_error,
|
||||||
@ -601,7 +601,7 @@ bool AsmAnalyzer::warnOnInstructions(evmasm::Instruction _instr, SourceLocation
|
|||||||
"\" instruction is deprecated and will be removed in the next breaking release."
|
"\" instruction is deprecated and will be removed in the next breaking release."
|
||||||
);
|
);
|
||||||
else if (_instr == evmasm::Instruction::SELFBALANCE && !m_evmVersion.hasSelfBalance())
|
else if (_instr == evmasm::Instruction::SELFBALANCE && !m_evmVersion.hasSelfBalance())
|
||||||
errorForVM("only available for Istanbul-compatible");
|
errorForVM(3672_error, "only available for Istanbul-compatible");
|
||||||
else if (
|
else if (
|
||||||
_instr == evmasm::Instruction::JUMP ||
|
_instr == evmasm::Instruction::JUMP ||
|
||||||
_instr == evmasm::Instruction::JUMPI ||
|
_instr == evmasm::Instruction::JUMPI ||
|
||||||
|
Loading…
Reference in New Issue
Block a user