diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index 838eb2a86158..0a0e9370a657 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -3139,14 +3139,22 @@ bool TypeChecker::visit(MemberAccess const& _memberAccess) else if (auto const* addressType = dynamic_cast(exprType)) { // Trigger error when using send or transfer with a non-payable fallback function. - if (memberName == "send" || memberName == "transfer" || memberName == "transferToken") + if ( + memberName == "send" || + memberName == "transfer" || + memberName == "transferToken" || + memberName == "freeze" || + memberName == "unfreeze" || + memberName == "delegateResource" || + memberName == "unDelegateResource" + ) { solAssert( addressType->stateMutability() != StateMutability::Payable, "Expected address not-payable as members were not found" ); - return { 9862_error, "\"send\", \"transfer\" and \"transferToken\" are only available for objects of type \"address payable\", not \"" + exprType->humanReadableName() + "\"." }; + return { 9862_error, "\"send\", \"transfer\", \"transferToken\", \"freeze\", \"unfreeze\", \"delegateResource\" and \"unDelegateResource\" are only available for objects of type \"address payable\", not \"" + exprType->humanReadableName() + "\"." }; } } diff --git a/libsolidity/analysis/ViewPureChecker.cpp b/libsolidity/analysis/ViewPureChecker.cpp index 33c914b60ac1..71c4020a9b44 100644 --- a/libsolidity/analysis/ViewPureChecker.cpp +++ b/libsolidity/analysis/ViewPureChecker.cpp @@ -286,8 +286,8 @@ void ViewPureChecker::reportMutability( 5887_error, _location, m_currentFunction->isConstructor() ? - "\"msg.value\" and \"callvalue()\" can only be used in payable constructors. Make the constructor \"payable\" to avoid this error." - : "\"msg.value\" and \"callvalue()\" can only be used in payable public functions. Make the function \"payable\" or use an internal function to avoid this error." + "\"msg.value\", \"msg.tokenid\", \"msg.tokenvalue\" and \"callvalue()\" can only be used in payable constructors. Make the constructor \"payable\" to avoid this error." + : "\"msg.value\", \"msg.tokenid\", \"msg.tokenvalue\" and \"callvalue()\" can only be used in payable public functions. Make the function \"payable\" or use an internal function to avoid this error." ); m_errors = true; } diff --git a/solc/CommandLineParser.cpp b/solc/CommandLineParser.cpp index 060791dfc2c6..1b29033f0014 100644 --- a/solc/CommandLineParser.cpp +++ b/solc/CommandLineParser.cpp @@ -1450,7 +1450,7 @@ void CommandLineParser::processArgs() "The --" + g_strViaIR + " is currently experimental for TRON solidity compiler. Use --" + g_strExperimentalViaIR + " instead." ); } - m_options.output.viaIR = (m_args.count(g_strExperimentalViaIR) > 0 || m_args.count(g_strViaIR) > 0); + m_options.output.viaIR = (m_args.count(g_strExperimentalViaIR) > 0); solAssert( m_options.input.mode == InputMode::Compiler ||