Add userDefinedFunctionType helper function

This commit is contained in:
wechman
2022-09-28 13:09:30 +02:00
parent 577a5bb7a4
commit 5cf88593fd
5 changed files with 44 additions and 33 deletions
+28
View File
@@ -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>();
+4
View File
@@ -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: