diff --git a/src/Generator.Tests/Passes/TestPasses.cs b/src/Generator.Tests/Passes/TestPasses.cs index a3e946dd..2c0b73ce 100644 --- a/src/Generator.Tests/Passes/TestPasses.cs +++ b/src/Generator.Tests/Passes/TestPasses.cs @@ -1,4 +1,5 @@ -using CppSharp.Passes; +using System.Linq; +using CppSharp.Passes; using NUnit.Framework; namespace CppSharp.Generator.Tests.Passes @@ -99,5 +100,13 @@ namespace CppSharp.Generator.Tests.Passes { } + + [Test] + public void TestIgnoringMethod() + { + AstContext.IgnoreClassMethodWithName("Foo", "toIgnore"); + Assert.IsTrue(AstContext.FindClass("Foo").First().Methods.Find( + m => m.Name == "toIgnore").ExplicityIgnored); + } } } diff --git a/src/Generator/Library.cs b/src/Generator/Library.cs index 7bd6966c..db276428 100644 --- a/src/Generator/Library.cs +++ b/src/Generator/Library.cs @@ -275,13 +275,11 @@ namespace CppSharp public static void IgnoreClassMethodWithName(this ASTContext context, string className, string name) { - foreach (var @class in context.FindClass(name)) + foreach (var method in from @class in context.FindClass(className) + from method in @class.Methods + where method.Name == name + select method) { - var method = @class.Methods.Find(m => m.Name == name); - - if (method == null) - return; - method.ExplicityIgnored = true; } } diff --git a/tests/Native/Passes.h b/tests/Native/Passes.h index 8c6c00d6..2435b21d 100644 --- a/tests/Native/Passes.h +++ b/tests/Native/Passes.h @@ -14,7 +14,10 @@ enum FlagEnum2 D1 = 1 << 4, }; -class Foo { }; +class Foo +{ + void toIgnore() { } +}; void FooStart(Foo*, int); struct TestRename