From d3e8cc51d5f9cf1781b6f4a9ca6c3c2d2392137b Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Fri, 28 Jul 2017 14:49:01 +0300 Subject: [PATCH] Further simplified the getting of base methods from only the primary bases. Signed-off-by: Dimitar Dobrev --- src/AST/ClassExtensions.cs | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/AST/ClassExtensions.cs b/src/AST/ClassExtensions.cs index c1f21a27..09dff4b4 100644 --- a/src/AST/ClassExtensions.cs +++ b/src/AST/ClassExtensions.cs @@ -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,