Browse Source

Fixed the generated C# when a constructor uses an unsupported expression in a default arg.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/719/head
Dimitar Dobrev 9 years ago
parent
commit
1b68ecf239
  1. 4
      src/Generator/Passes/ConstructorToConversionOperatorPass.cs
  2. 4
      tests/CSharp/CSharp.cpp
  3. 1
      tests/CSharp/CSharp.h

4
src/Generator/Passes/ConstructorToConversionOperatorPass.cs

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

4
tests/CSharp/CSharp.cpp

@ -476,6 +476,10 @@ MethodsWithDefaultValues::MethodsWithDefaultValues(double d, QList<QColor> list) @@ -476,6 +476,10 @@ MethodsWithDefaultValues::MethodsWithDefaultValues(double d, QList<QColor> list)
{
}
MethodsWithDefaultValues::MethodsWithDefaultValues(QRect* pointer, float f, int i)
{
}
void MethodsWithDefaultValues::defaultPointer(Foo *ptr)
{
}

1
tests/CSharp/CSharp.h

@ -388,6 +388,7 @@ public: @@ -388,6 +388,7 @@ public:
MethodsWithDefaultValues(Foo foo = Foo());
MethodsWithDefaultValues(int a);
MethodsWithDefaultValues(double d, QList<QColor> list = QList<QColor>());
MethodsWithDefaultValues(QRect* pointer, float f = 1, int i = std::numeric_limits<double>::infinity());
void defaultPointer(Foo* ptr = 0);
void defaultVoidStar(void* ptr = 0);
void defaultValueType(QGenericArgument valueType = QGenericArgument());

Loading…
Cancel
Save