From 2a53e079aaecc2611b583d6e1dfccf3d467c6ac4 Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Thu, 24 May 2018 16:20:24 +0100 Subject: [PATCH] Fixed broken class instance check in FunctionToInstanceMethodPass. Fixes https://github.com/mono/CppSharp/issues/1081. --- src/Generator/Passes/FunctionToInstanceMethodPass.cs | 5 ++++- tests/Native/Passes.h | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Generator/Passes/FunctionToInstanceMethodPass.cs b/src/Generator/Passes/FunctionToInstanceMethodPass.cs index 464bf8a5..3f3014bd 100644 --- a/src/Generator/Passes/FunctionToInstanceMethodPass.cs +++ b/src/Generator/Passes/FunctionToInstanceMethodPass.cs @@ -18,6 +18,9 @@ namespace CppSharp.Passes public override bool VisitFunctionDecl(Function function) { + if (AlreadyVisited(function)) + return false; + if (!function.IsGenerated) return false; @@ -79,7 +82,7 @@ namespace CppSharp.Passes if (classParam.Type.IsPointerTo(out tag)) { @class = tag.Declaration as Class; - return true; + return @class != null; } return classParam.Type.TryGetClass(out @class); diff --git a/tests/Native/Passes.h b/tests/Native/Passes.h index d1fdac2d..5954a6d2 100644 --- a/tests/Native/Passes.h +++ b/tests/Native/Passes.h @@ -77,3 +77,10 @@ class ClassWithAbstractOperator { virtual operator int() = 0; }; + +enum ConnectionRole +{ + Role1, Role2 +}; + +bool ConnectionRoleToString(const ConnectionRole& role, const char* role_str);