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
Type type = parameter.Type.Desugar(resolveTemplateSubstitution: false); Type type = parameter.Type.Desugar(resolveTemplateSubstitution: false);
type = (type.GetFinalPointee() ?? type).Desugar( type = (type.GetFinalPointee() ?? type).Desugar(
resolveTemplateSubstitution: false); resolveTemplateSubstitution: false);
if (type is TemplateParameterSubstitutionType) if (type is TemplateParameterSubstitutionType || type.IsDependent)
{ {
parameter.DefaultArgument = null; parameter.DefaultArgument = null;
continue; continue;

2
tests/CSharp/CSharp.Tests.cs

@ -951,7 +951,7 @@ public unsafe class CSharpTests : GeneratorTestFixture
[Test] [Test]
public void TestFieldWithDependentPointerType() 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>
class DLL_API DependentPointerFields class DLL_API DependentPointerFields
{ {
public: public:
DependentPointerFields(); DependentPointerFields(T t = 0);
~DependentPointerFields(); ~DependentPointerFields();
T property(); T property();
T takeField(T t); T takeField(T t);
@ -248,7 +248,7 @@ public:
}; };
template <typename T> template <typename T>
DependentPointerFields<T>::DependentPointerFields() DependentPointerFields<T>::DependentPointerFields(T t)
{ {
} }

Loading…
Cancel
Save