From 36226268a663c5db9f76761b3bf627fea8711cd9 Mon Sep 17 00:00:00 2001 From: triton Date: Fri, 13 Sep 2013 01:17:36 +0100 Subject: [PATCH] Fixed checking of virtual overrides to also check if the base override is ignored. --- src/Generator/Passes/CheckIgnoredDecls.cs | 32 ++++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/Generator/Passes/CheckIgnoredDecls.cs b/src/Generator/Passes/CheckIgnoredDecls.cs index 102f4d53..15898b56 100644 --- a/src/Generator/Passes/CheckIgnoredDecls.cs +++ b/src/Generator/Passes/CheckIgnoredDecls.cs @@ -116,16 +116,34 @@ namespace CppSharp.Passes { var @class = method.Namespace as Class; - Class ignoredBase; - if (method.IsVirtual && HasIgnoredBaseClass(method, @class, out ignoredBase)) + if (method.IsVirtual) { - Driver.Diagnostics.EmitMessage( - "Virtual method '{0}' was ignored due to ignored base '{1}'", - method.QualifiedOriginalName, ignoredBase.Name); + Class ignoredBase; + if (HasIgnoredBaseClass(method, @class, out ignoredBase)) + { + Driver.Diagnostics.EmitMessage( + "Virtual method '{0}' was ignored due to ignored base '{1}'", + method.QualifiedOriginalName, ignoredBase.Name); - method.ExplicityIgnored = true; - return false; + method.ExplicityIgnored = true; + return false; + } + + if (method.IsOverride) + { + var baseOverride = @class.GetRootBaseMethod(method); + if (baseOverride != null && baseOverride.Ignore) + { + Driver.Diagnostics.EmitMessage( + "Virtual method '{0}' was ignored due to ignored override '{1}'", + method.QualifiedOriginalName, baseOverride.Name); + + method.ExplicityIgnored = true; + return false; + } + } } + return true; }