Skip to content

Commit 64773a5

Browse files
committed
Generate valid C# for template parameters with a default value
Signed-off-by: Dimitar Dobrev <[email protected]>
1 parent 72368d5 commit 64773a5

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

src/Generator/Passes/HandleDefaultParamValuesPass.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public override bool VisitFunctionDecl(Function function)
4646
Type type = parameter.Type.Desugar(resolveTemplateSubstitution: false);
4747
type = (type.GetFinalPointee() ?? type).Desugar(
4848
resolveTemplateSubstitution: false);
49-
if (type is TemplateParameterSubstitutionType)
49+
if (type is TemplateParameterSubstitutionType || type.IsDependent)
5050
{
5151
parameter.DefaultArgument = null;
5252
continue;

tests/CSharp/CSharp.Tests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -951,7 +951,7 @@ public void TestExtensionsOfSpecializationsAsSecondaryBases()
951951
[Test]
952952
public void TestFieldWithDependentPointerType()
953953
{
954-
using (var dependentPointerFields = new DependentPointerFields<float>())
954+
using (var dependentPointerFields = new DependentPointerFields<float>(0))
955955
{
956956
}
957957
}

tests/CSharp/CSharpTemplates.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,15 +240,15 @@ template <typename T>
240240
class DLL_API DependentPointerFields
241241
{
242242
public:
243-
DependentPointerFields();
243+
DependentPointerFields(T t = 0);
244244
~DependentPointerFields();
245245
T property();
246246
T takeField(T t);
247247
T* field;
248248
};
249249

250250
template <typename T>
251-
DependentPointerFields<T>::DependentPointerFields()
251+
DependentPointerFields<T>::DependentPointerFields(T t)
252252
{
253253
}
254254

0 commit comments

Comments
 (0)