diff --git a/src/AST/Class.cs b/src/AST/Class.cs index a4d029ef..854dd932 100644 --- a/src/AST/Class.cs +++ b/src/AST/Class.cs @@ -191,8 +191,8 @@ namespace CppSharp.AST public override IEnumerable GetFunctionOverloads(Function function) { - if (function.OperatorKind == CXXOperatorKind.Conversion) - return Methods.Where(fn => fn.OperatorKind == CXXOperatorKind.Conversion); + if (function.IsOperator) + return FindOperator(function.OperatorKind); return Methods.Where(method => method.Name == function.Name); } diff --git a/src/AST/Namespace.cs b/src/AST/Namespace.cs index 3d3f15b4..7ab16b0a 100644 --- a/src/AST/Namespace.cs +++ b/src/AST/Namespace.cs @@ -266,10 +266,15 @@ namespace CppSharp.AST return Enums.Find(e => e.ItemsByName.ContainsKey(name)); } + public IEnumerable FindOperator(CXXOperatorKind kind) + { + return Functions.Where(fn => fn.OperatorKind == function.OperatorKind); + } + public virtual IEnumerable GetFunctionOverloads(Function function) { if (function.IsOperator) - return Functions.Where(fn => fn.OperatorKind == function.OperatorKind); + return FindOperator(function.OperatorKind); return Functions.Where(fn => fn.Name == function.Name); }