diff --git a/src/Generator/Passes/MoveFunctionToClassPass.cs b/src/Generator/Passes/MoveFunctionToClassPass.cs index 54ec0f9d..d5e6e205 100644 --- a/src/Generator/Passes/MoveFunctionToClassPass.cs +++ b/src/Generator/Passes/MoveFunctionToClassPass.cs @@ -20,6 +20,9 @@ namespace CppSharp.Passes if (@class != null) MoveFunction(function, @class); + if (function.IsOperator) + function.ExplicityIgnored = true; + return true; } @@ -43,6 +46,8 @@ namespace CppSharp.Passes IsStatic = true }; + function.ExplicityIgnored = true; + if (method.OperatorKind != CXXOperatorKind.None) { var param = function.Parameters[0]; @@ -54,8 +59,6 @@ namespace CppSharp.Passes method.OriginalFunction = null; } - function.ExplicityIgnored = true; - @class.Methods.Add(method); } } diff --git a/tests/Basic/Basic.cpp b/tests/Basic/Basic.cpp index c1677463..7cd88cbe 100644 --- a/tests/Basic/Basic.cpp +++ b/tests/Basic/Basic.cpp @@ -207,3 +207,8 @@ int test(basic& s) { return 5; } + +Bar::Item operator |(Bar::Item left, Bar::Item right) +{ + return left | right; +} diff --git a/tests/Basic/Basic.h b/tests/Basic/Basic.h index 7eecc2ef..ffb4b2f7 100644 --- a/tests/Basic/Basic.h +++ b/tests/Basic/Basic.h @@ -233,3 +233,5 @@ struct DLL_API TestDelegates DelegateInClass A; DelegateInGlobalNamespace B; }; + +DLL_API Bar::Item operator |(Bar::Item left, Bar::Item right);