@@ -532,6 +532,12 @@ Type const* FunctionDefinition::typeViaContractName(ContractNameAccessKind _acce
532532 }
533533}
534534
535+ Type const * FunctionDefinition::typeWhenAttached () const
536+ {
537+ solAssert (isFree () || libraryFunction ());
538+ return libraryFunction () ? typeViaContractName (ContractNameAccessKind::Library) : type ();
539+ }
540+
535541std::string FunctionDefinition::externalSignature () const
536542{
537543 return TypeProvider::function (*this )->externalSignature ();
@@ -978,11 +984,7 @@ FunctionType const* UnaryOperation::userDefinedFunctionType() const
978984 return nullptr ;
979985
980986 FunctionDefinition const * userDefinedFunction = *annotation ().userDefinedFunction ;
981- return dynamic_cast <FunctionType const *>(
982- userDefinedFunction->libraryFunction () ?
983- userDefinedFunction->typeViaContractName (Declaration::ContractNameAccessKind::Library) :
984- userDefinedFunction->type ()
985- );
987+ return dynamic_cast <FunctionType const *>(userDefinedFunction->typeWhenAttached ());
986988}
987989
988990FunctionType const * BinaryOperation::userDefinedFunctionType () const
@@ -991,11 +993,7 @@ FunctionType const* BinaryOperation::userDefinedFunctionType() const
991993 return nullptr ;
992994
993995 FunctionDefinition const * userDefinedFunction = *annotation ().userDefinedFunction ;
994- return dynamic_cast <FunctionType const *>(
995- userDefinedFunction->libraryFunction () ?
996- userDefinedFunction->typeViaContractName (Declaration::ContractNameAccessKind::Library) :
997- userDefinedFunction->type ()
998- );
996+ return dynamic_cast <FunctionType const *>(userDefinedFunction->typeWhenAttached ());
999997}
1000998
1001999BinaryOperationAnnotation& BinaryOperation::annotation () const
0 commit comments