From 858faeb7c950bda63345779847ccb02d84ecadbc Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Mon, 22 Jul 2024 16:12:30 +1200 Subject: [PATCH] Add new modifier to GetType on interface helper classes --- .../Generator/Renderer/Public/FunctionRenderer.cs | 7 ++++++- .../InterfaceImplementationFunctions.cs | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Generation/Generator/Renderer/Public/FunctionRenderer.cs b/src/Generation/Generator/Renderer/Public/FunctionRenderer.cs index ba4077eed..f67772892 100644 --- a/src/Generation/Generator/Renderer/Public/FunctionRenderer.cs +++ b/src/Generation/Generator/Renderer/Public/FunctionRenderer.cs @@ -9,6 +9,11 @@ namespace Generator.Renderer.Public; internal static class FunctionRenderer { public static string Render(GirModel.Function? function) + { + return Render(function, forceNewModifier: false); + } + + public static string Render(GirModel.Function? function, bool forceNewModifier) { if (function is null) return string.Empty; @@ -19,7 +24,7 @@ public static string Render(GirModel.Function? function) try { var parameters = ParameterToNativeExpression.Initialize(function.Parameters); - var newModifier = Function.HidesFunction(function) ? "new " : string.Empty; + var newModifier = (forceNewModifier || Function.HidesFunction(function)) ? "new " : string.Empty; return @$" {VersionAttribute.Render(function.Version)} public static {newModifier}{ReturnTypeRenderer.Render(function.ReturnType)} {Function.GetName(function)}({RenderParameters(parameters)}) diff --git a/src/Generation/Generator/Renderer/Public/InterfaceImplementation/InterfaceImplementationFunctions.cs b/src/Generation/Generator/Renderer/Public/InterfaceImplementation/InterfaceImplementationFunctions.cs index 5b6cb6685..3f0b0608e 100644 --- a/src/Generation/Generator/Renderer/Public/InterfaceImplementation/InterfaceImplementationFunctions.cs +++ b/src/Generation/Generator/Renderer/Public/InterfaceImplementation/InterfaceImplementationFunctions.cs @@ -22,7 +22,8 @@ namespace {Namespace.GetPublicName(@interface.Namespace)}; public partial class {Interface.GetImplementationName(@interface)} : GObject.GTypeProvider {{ - {FunctionRenderer.Render(@interface.TypeFunction)} + // The implementation class also inherits from GObject.Object so GetType needs the new modifier + {FunctionRenderer.Render(@interface.TypeFunction, forceNewModifier: true)} {@interface.Functions .Select(FunctionRenderer.Render)