Browse Source

Further simplified the getting of base methods from only the primary bases.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/904/head
Dimitar Dobrev 8 years ago
parent
commit
d3e8cc51d5
  1. 24
      src/AST/ClassExtensions.cs

24
src/AST/ClassExtensions.cs

@ -43,21 +43,15 @@ namespace CppSharp.AST @@ -43,21 +43,15 @@ namespace CppSharp.AST
public static Method GetBaseMethod(this Class @class, Method @override)
{
foreach (var @base in @class.Bases.Where(
b => b.IsClass && b.Class.OriginalClass != @class && !b.Class.IsInterface))
{
var baseClass = @base.Class.OriginalClass ?? @base.Class;
Method baseMethod = baseClass.GetBaseMethod(@override);
if (baseMethod != null)
return baseMethod;
baseMethod = (from method in baseClass.Methods
where @override.CanOverride(method)
select method).FirstOrDefault();
if (baseMethod != null)
return baseMethod;
}
return null;
if (@class.BaseClass == null || @class.BaseClass.IsInterface)
return null;
var baseClass = @class.BaseClass.OriginalClass ?? @class.BaseClass;
Method baseMethod = baseClass.GetBaseMethod(@override);
if (baseMethod != null)
return baseMethod;
return baseClass.Methods.FirstOrDefault(m => @override.CanOverride(m));
}
public static Property GetBaseProperty(this Class @class, Property @override,

Loading…
Cancel
Save