mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add userDefinedFunctionType helper function
This commit is contained in:
@@ -907,6 +907,34 @@ OperationAnnotation& UnaryOperation::annotation() const
|
||||
return initAnnotation<OperationAnnotation>();
|
||||
}
|
||||
|
||||
FunctionType const* UnaryOperation::userDefinedFunctionType() const
|
||||
{
|
||||
if (!annotation().userDefinedFunction.set())
|
||||
return nullptr;
|
||||
|
||||
FunctionDefinition const* userDefinedFunction = *annotation().userDefinedFunction;
|
||||
solAssert(userDefinedFunction);
|
||||
return dynamic_cast<FunctionType const*>(
|
||||
userDefinedFunction->libraryFunction() ?
|
||||
userDefinedFunction->typeViaContractName() :
|
||||
userDefinedFunction->type()
|
||||
);
|
||||
}
|
||||
|
||||
FunctionType const* BinaryOperation::userDefinedFunctionType() const
|
||||
{
|
||||
if (!annotation().userDefinedFunction.set())
|
||||
return nullptr;
|
||||
|
||||
FunctionDefinition const* userDefinedFunction = *annotation().userDefinedFunction;
|
||||
solAssert(userDefinedFunction);
|
||||
return dynamic_cast<FunctionType const*>(
|
||||
userDefinedFunction->libraryFunction() ?
|
||||
userDefinedFunction->typeViaContractName() :
|
||||
userDefinedFunction->type()
|
||||
);
|
||||
}
|
||||
|
||||
BinaryOperationAnnotation& BinaryOperation::annotation() const
|
||||
{
|
||||
return initAnnotation<BinaryOperationAnnotation>();
|
||||
|
||||
@@ -2068,6 +2068,8 @@ public:
|
||||
bool isPrefixOperation() const { return m_isPrefix; }
|
||||
Expression const& subExpression() const { return *m_subExpression; }
|
||||
|
||||
FunctionType const* userDefinedFunctionType() const;
|
||||
|
||||
OperationAnnotation& annotation() const override;
|
||||
|
||||
private:
|
||||
@@ -2101,6 +2103,8 @@ public:
|
||||
Expression const& rightExpression() const { return *m_right; }
|
||||
Token getOperator() const { return m_operator; }
|
||||
|
||||
FunctionType const* userDefinedFunctionType() const;
|
||||
|
||||
BinaryOperationAnnotation& annotation() const override;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user