@@ -533,6 +533,12 @@ Type const* FunctionDefinition::typeViaContractName(ContractNameAccessKind _acce
533533 util::unreachable ();
534534}
535535
536+ Type const * FunctionDefinition::typeWhenAttached () const
537+ {
538+ solAssert (isFree () || libraryFunction ());
539+ return libraryFunction () ? typeViaContractName (ContractNameAccessKind::Library) : type ();
540+ }
541+
536542std::string FunctionDefinition::externalSignature () const
537543{
538544 return TypeProvider::function (*this )->externalSignature ();
@@ -979,11 +985,7 @@ FunctionType const* UnaryOperation::userDefinedFunctionType() const
979985 return nullptr ;
980986
981987 FunctionDefinition const * userDefinedFunction = *annotation ().userDefinedFunction ;
982- return dynamic_cast <FunctionType const *>(
983- userDefinedFunction->libraryFunction () ?
984- userDefinedFunction->typeViaContractName (Declaration::ContractNameAccessKind::Library) :
985- userDefinedFunction->type ()
986- );
988+ return dynamic_cast <FunctionType const *>(userDefinedFunction->typeWhenAttached ());
987989}
988990
989991FunctionType const * BinaryOperation::userDefinedFunctionType () const
@@ -992,11 +994,7 @@ FunctionType const* BinaryOperation::userDefinedFunctionType() const
992994 return nullptr ;
993995
994996 FunctionDefinition const * userDefinedFunction = *annotation ().userDefinedFunction ;
995- return dynamic_cast <FunctionType const *>(
996- userDefinedFunction->libraryFunction () ?
997- userDefinedFunction->typeViaContractName (Declaration::ContractNameAccessKind::Library) :
998- userDefinedFunction->type ()
999- );
997+ return dynamic_cast <FunctionType const *>(userDefinedFunction->typeWhenAttached ());
1000998}
1001999
10021000BinaryOperationAnnotation& BinaryOperation::annotation () const
0 commit comments