mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Assert about some removed language concepts in the code generator.
This commit is contained in:
parent
3d1ca07e9b
commit
97d01d9b47
@ -568,12 +568,13 @@ bool ExpressionCompiler::visit(FunctionCall const& _functionCall)
|
||||
case FunctionType::Kind::External:
|
||||
case FunctionType::Kind::DelegateCall:
|
||||
case FunctionType::Kind::BareCall:
|
||||
case FunctionType::Kind::BareCallCode:
|
||||
case FunctionType::Kind::BareDelegateCall:
|
||||
case FunctionType::Kind::BareStaticCall:
|
||||
_functionCall.expression().accept(*this);
|
||||
appendExternalFunctionCall(function, arguments);
|
||||
break;
|
||||
case FunctionType::Kind::BareCallCode:
|
||||
solAssert(false, "Callcode has been removed.");
|
||||
case FunctionType::Kind::Creation:
|
||||
{
|
||||
_functionCall.expression().accept(*this);
|
||||
@ -1328,8 +1329,6 @@ bool ExpressionCompiler::visit(MemberAccess const& _memberAccess)
|
||||
m_context << Instruction::CALLVALUE;
|
||||
else if (member == "origin")
|
||||
m_context << Instruction::ORIGIN;
|
||||
else if (member == "gas")
|
||||
m_context << Instruction::GAS;
|
||||
else if (member == "gasprice")
|
||||
m_context << Instruction::GASPRICE;
|
||||
else if (member == "data")
|
||||
@ -1337,9 +1336,10 @@ bool ExpressionCompiler::visit(MemberAccess const& _memberAccess)
|
||||
else if (member == "sig")
|
||||
m_context << u256(0) << Instruction::CALLDATALOAD
|
||||
<< (u256(0xffffffff) << (256 - 32)) << Instruction::AND;
|
||||
else if (member == "gas")
|
||||
solAssert(false, "Gas has been removed.");
|
||||
else if (member == "blockhash")
|
||||
{
|
||||
}
|
||||
solAssert(false, "Blockhash has been removed.");
|
||||
else
|
||||
solAssert(false, "Unknown magic member.");
|
||||
break;
|
||||
@ -1844,8 +1844,9 @@ void ExpressionCompiler::appendExternalFunctionCall(
|
||||
|
||||
solAssert(funKind != FunctionType::Kind::BareStaticCall || m_context.evmVersion().hasStaticCall(), "");
|
||||
|
||||
bool returnSuccessConditionAndReturndata = funKind == FunctionType::Kind::BareCall || funKind == FunctionType::Kind::BareCallCode || funKind == FunctionType::Kind::BareDelegateCall || funKind == FunctionType::Kind::BareStaticCall;
|
||||
bool isCallCode = funKind == FunctionType::Kind::BareCallCode;
|
||||
solAssert(funKind != FunctionType::Kind::BareCallCode, "Callcode has been removed.");
|
||||
|
||||
bool returnSuccessConditionAndReturndata = funKind == FunctionType::Kind::BareCall || funKind == FunctionType::Kind::BareDelegateCall || funKind == FunctionType::Kind::BareStaticCall;
|
||||
bool isDelegateCall = funKind == FunctionType::Kind::BareDelegateCall || funKind == FunctionType::Kind::DelegateCall;
|
||||
bool useStaticCall = funKind == FunctionType::Kind::BareStaticCall || (_functionType.stateMutability() <= StateMutability::View && m_context.evmVersion().hasStaticCall());
|
||||
|
||||
@ -1930,7 +1931,7 @@ void ExpressionCompiler::appendExternalFunctionCall(
|
||||
parameterTypes,
|
||||
_functionType.padArguments(),
|
||||
_functionType.takesArbitraryParameters() || _functionType.isBareCall(),
|
||||
isCallCode || isDelegateCall
|
||||
isDelegateCall
|
||||
);
|
||||
|
||||
// Stack now:
|
||||
@ -2001,8 +2002,6 @@ void ExpressionCompiler::appendExternalFunctionCall(
|
||||
// Order is important here, STATICCALL might overlap with DELEGATECALL.
|
||||
if (isDelegateCall)
|
||||
m_context << Instruction::DELEGATECALL;
|
||||
else if (isCallCode)
|
||||
m_context << Instruction::CALLCODE;
|
||||
else if (useStaticCall)
|
||||
m_context << Instruction::STATICCALL;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user