diff --git a/src/AST/FunctionExtensions.cs b/src/AST/FunctionExtensions.cs index 930eaa12..49a09ed4 100644 --- a/src/AST/FunctionExtensions.cs +++ b/src/AST/FunctionExtensions.cs @@ -74,6 +74,16 @@ namespace CppSharp.AST return @params; } + public static bool IsGeneratedOverride(this Method method) + { + // Check if overriding a function from a secondary base. + var @class = method.Namespace as Class; + Method rootBaseMethod; + return method.IsOverride && + (rootBaseMethod = @class.GetBaseMethod(method, true)) != null && + rootBaseMethod.IsGenerated && rootBaseMethod.IsVirtual; + } + public static bool CanOverride(this Method @override, Method method) { return (method.OriginalName == @override.OriginalName && diff --git a/src/Generator/Generators/CLI/CLIHeaders.cs b/src/Generator/Generators/CLI/CLIHeaders.cs index 659105a4..2b13fb48 100644 --- a/src/Generator/Generators/CLI/CLIHeaders.cs +++ b/src/Generator/Generators/CLI/CLIHeaders.cs @@ -713,9 +713,7 @@ namespace CppSharp.Generators.CLI Write(")"); if (method.IsOverride) - { Write(" override"); - } } public void GenerateMethod(Method method) diff --git a/src/Generator/Generators/CSharp/CSharpSources.cs b/src/Generator/Generators/CSharp/CSharpSources.cs index 960abc55..e7a5fe94 100644 --- a/src/Generator/Generators/CSharp/CSharpSources.cs +++ b/src/Generator/Generators/CSharp/CSharpSources.cs @@ -2078,13 +2078,7 @@ namespace CppSharp.Generators.CSharp public override void GenerateMethodSpecifier(Method method, Class @class) { - // check if overriding a function from a secondary base - Method rootBaseMethod; - var isOverride = method.IsOverride && - (rootBaseMethod = @class.GetBaseMethod(method, true)) != null && - rootBaseMethod.IsGenerated && rootBaseMethod.IsVirtual; - - if (method.IsVirtual && !isOverride && !method.IsOperator && !method.IsPure) + if (method.IsVirtual && !method.IsGeneratedOverride() && !method.IsOperator && !method.IsPure) Write("virtual "); var isBuiltinOperator = method.IsOperator && @@ -2093,10 +2087,8 @@ namespace CppSharp.Generators.CSharp if (method.IsStatic || isBuiltinOperator) Write("static "); - if (isOverride) - { + if (method.IsGeneratedOverride()) Write("override "); - } if (method.IsPure) Write("abstract ");