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. 32
      src/Generator/Passes/CheckIgnoredDecls.cs

32
src/Generator/Passes/CheckIgnoredDecls.cs

@ -116,16 +116,34 @@ namespace CppSharp.Passes
{ {
var @class = method.Namespace as Class; var @class = method.Namespace as Class;
Class ignoredBase; if (method.IsVirtual)
if (method.IsVirtual && HasIgnoredBaseClass(method, @class, out ignoredBase))
{ {
Driver.Diagnostics.EmitMessage( Class ignoredBase;
"Virtual method '{0}' was ignored due to ignored base '{1}'", if (HasIgnoredBaseClass(method, @class, out ignoredBase))
method.QualifiedOriginalName, ignoredBase.Name); {
Driver.Diagnostics.EmitMessage(
"Virtual method '{0}' was ignored due to ignored base '{1}'",
method.QualifiedOriginalName, ignoredBase.Name);
method.ExplicityIgnored = true; method.ExplicityIgnored = true;
return false; 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; return true;
} }

Loading…
Cancel
Save