Browse Source

Fixed checking of virtual overrides to also check if the base override is ignored.

pull/61/merge
triton 12 years ago
parent
commit
36226268a6
  1. 20
      src/Generator/Passes/CheckIgnoredDecls.cs

20
src/Generator/Passes/CheckIgnoredDecls.cs

@ -116,8 +116,10 @@ namespace CppSharp.Passes @@ -116,8 +116,10 @@ namespace CppSharp.Passes
{
var @class = method.Namespace as Class;
if (method.IsVirtual)
{
Class ignoredBase;
if (method.IsVirtual && HasIgnoredBaseClass(method, @class, out ignoredBase))
if (HasIgnoredBaseClass(method, @class, out ignoredBase))
{
Driver.Diagnostics.EmitMessage(
"Virtual method '{0}' was ignored due to ignored base '{1}'",
@ -126,6 +128,22 @@ namespace CppSharp.Passes @@ -126,6 +128,22 @@ namespace CppSharp.Passes
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;
}

Loading…
Cancel
Save