From 64773a5f6f2f8bc574b4b48e9d43f67f44ae4c67 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Tue, 18 Jun 2019 16:51:26 +0300 Subject: [PATCH] Generate valid C# for template parameters with a default value Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/HandleDefaultParamValuesPass.cs | 2 +- tests/CSharp/CSharp.Tests.cs | 2 +- tests/CSharp/CSharpTemplates.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Generator/Passes/HandleDefaultParamValuesPass.cs b/src/Generator/Passes/HandleDefaultParamValuesPass.cs index 77f56dab..a15b5b27 100644 --- a/src/Generator/Passes/HandleDefaultParamValuesPass.cs +++ b/src/Generator/Passes/HandleDefaultParamValuesPass.cs @@ -46,7 +46,7 @@ namespace CppSharp.Passes Type type = parameter.Type.Desugar(resolveTemplateSubstitution: false); type = (type.GetFinalPointee() ?? type).Desugar( resolveTemplateSubstitution: false); - if (type is TemplateParameterSubstitutionType) + if (type is TemplateParameterSubstitutionType || type.IsDependent) { parameter.DefaultArgument = null; continue; diff --git a/tests/CSharp/CSharp.Tests.cs b/tests/CSharp/CSharp.Tests.cs index 9159c809..ba751d46 100644 --- a/tests/CSharp/CSharp.Tests.cs +++ b/tests/CSharp/CSharp.Tests.cs @@ -951,7 +951,7 @@ public unsafe class CSharpTests : GeneratorTestFixture [Test] public void TestFieldWithDependentPointerType() { - using (var dependentPointerFields = new DependentPointerFields()) + using (var dependentPointerFields = new DependentPointerFields(0)) { } } diff --git a/tests/CSharp/CSharpTemplates.h b/tests/CSharp/CSharpTemplates.h index 4272435e..2cf4d8fb 100644 --- a/tests/CSharp/CSharpTemplates.h +++ b/tests/CSharp/CSharpTemplates.h @@ -240,7 +240,7 @@ template class DLL_API DependentPointerFields { public: - DependentPointerFields(); + DependentPointerFields(T t = 0); ~DependentPointerFields(); T property(); T takeField(T t); @@ -248,7 +248,7 @@ public: }; template -DependentPointerFields::DependentPointerFields() +DependentPointerFields::DependentPointerFields(T t) { }