Browse Source

Generate valid C# for template parameters with a default value

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1227/head
Dimitar Dobrev 6 years ago
parent
commit
64773a5f6f
  1. 2
      src/Generator/Passes/HandleDefaultParamValuesPass.cs
  2. 2
      tests/CSharp/CSharp.Tests.cs
  3. 4
      tests/CSharp/CSharpTemplates.h

2
src/Generator/Passes/HandleDefaultParamValuesPass.cs

@ -46,7 +46,7 @@ namespace CppSharp.Passes @@ -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;

2
tests/CSharp/CSharp.Tests.cs

@ -951,7 +951,7 @@ public unsafe class CSharpTests : GeneratorTestFixture @@ -951,7 +951,7 @@ public unsafe class CSharpTests : GeneratorTestFixture
[Test]
public void TestFieldWithDependentPointerType()
{
using (var dependentPointerFields = new DependentPointerFields<float>())
using (var dependentPointerFields = new DependentPointerFields<float>(0))
{
}
}

4
tests/CSharp/CSharpTemplates.h

@ -240,7 +240,7 @@ template <typename T> @@ -240,7 +240,7 @@ template <typename T>
class DLL_API DependentPointerFields
{
public:
DependentPointerFields();
DependentPointerFields(T t = 0);
~DependentPointerFields();
T property();
T takeField(T t);
@ -248,7 +248,7 @@ public: @@ -248,7 +248,7 @@ public:
};
template <typename T>
DependentPointerFields<T>::DependentPointerFields()
DependentPointerFields<T>::DependentPointerFields(T t)
{
}

Loading…
Cancel
Save