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

Loading…
Cancel
Save