|
|
@ -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, |
|
|
|