From 1b68ecf239760bfca357feaa883d6c62c395ecb2 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Fri, 4 Nov 2016 20:42:46 +0200 Subject: [PATCH] Fixed the generated C# when a constructor uses an unsupported expression in a default arg. Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/ConstructorToConversionOperatorPass.cs | 4 +++- tests/CSharp/CSharp.cpp | 4 ++++ tests/CSharp/CSharp.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Generator/Passes/ConstructorToConversionOperatorPass.cs b/src/Generator/Passes/ConstructorToConversionOperatorPass.cs index 121af2c8..3633dcfb 100644 --- a/src/Generator/Passes/ConstructorToConversionOperatorPass.cs +++ b/src/Generator/Passes/ConstructorToConversionOperatorPass.cs @@ -22,7 +22,9 @@ namespace CppSharp.Passes if (Options.GenerateDefaultValuesForArguments) { - var nonDefaultParams = @params.Count(p => p.DefaultArgument == null); + var nonDefaultParams = @params.Count(p => p.DefaultArgument == null || + (p.DefaultArgument.Class == StatementClass.Call && + p.DefaultArgument.Declaration.Ignore)); if (nonDefaultParams > 1) return false; } diff --git a/tests/CSharp/CSharp.cpp b/tests/CSharp/CSharp.cpp index 9d9074cb..ba58370c 100644 --- a/tests/CSharp/CSharp.cpp +++ b/tests/CSharp/CSharp.cpp @@ -476,6 +476,10 @@ MethodsWithDefaultValues::MethodsWithDefaultValues(double d, QList list) { } +MethodsWithDefaultValues::MethodsWithDefaultValues(QRect* pointer, float f, int i) +{ +} + void MethodsWithDefaultValues::defaultPointer(Foo *ptr) { } diff --git a/tests/CSharp/CSharp.h b/tests/CSharp/CSharp.h index aefbd3a3..14dd4e12 100644 --- a/tests/CSharp/CSharp.h +++ b/tests/CSharp/CSharp.h @@ -388,6 +388,7 @@ public: MethodsWithDefaultValues(Foo foo = Foo()); MethodsWithDefaultValues(int a); MethodsWithDefaultValues(double d, QList list = QList()); + MethodsWithDefaultValues(QRect* pointer, float f = 1, int i = std::numeric_limits::infinity()); void defaultPointer(Foo* ptr = 0); void defaultVoidStar(void* ptr = 0); void defaultValueType(QGenericArgument valueType = QGenericArgument());