Add type error when attempting value transfer to a non-payable contract

This commit is contained in:
Federico Bond
2017-07-12 23:57:53 -03:00
parent 757c500bda
commit f20b150f38
5 changed files with 100 additions and 0 deletions
+6
View File
@@ -1230,6 +1230,12 @@ bool ContractType::isExplicitlyConvertibleTo(Type const& _convertTo) const
_convertTo.category() == Category::Contract;
}
bool ContractType::isPayable() const
{
auto fallbackFunction = m_contract.fallbackFunction();
return fallbackFunction && fallbackFunction->isPayable();
}
TypePointer ContractType::unaryOperatorResult(Token::Value _operator) const
{
return _operator == Token::Delete ? make_shared<TupleType>() : TypePointer();
+4
View File
@@ -675,6 +675,10 @@ public:
}
bool isSuper() const { return m_super; }
// @returns true if and only if the contract has a payable fallback function
bool isPayable() const;
ContractDefinition const& contractDefinition() const { return m_contract; }
/// Returns the function type of the constructor modified to return an object of the contract's type.