diff --git a/src/Generator/Passes/HandleDefaultParamValuesPass.cs b/src/Generator/Passes/HandleDefaultParamValuesPass.cs index 6810947a..fd87a011 100644 --- a/src/Generator/Passes/HandleDefaultParamValuesPass.cs +++ b/src/Generator/Passes/HandleDefaultParamValuesPass.cs @@ -47,7 +47,10 @@ namespace CppSharp.Passes var result = parameter.DefaultArgument.String; if (PrintExpression(parameter.Type, parameter.DefaultArgument, ref result) == null) overloadIndices.Add(function.Parameters.IndexOf(parameter)); - parameter.DefaultArgument.String = result; + if (string.IsNullOrEmpty(result)) + parameter.DefaultArgument = null; + else + parameter.DefaultArgument.String = result; } GenerateOverloads(function, overloadIndices); @@ -70,7 +73,14 @@ namespace CppSharp.Passes return true; if (expression.Class == StatementClass.Call) - return expression.Declaration.Ignore ? false : (bool?) null; + { + if (expression.Declaration.Ignore) + { + result = null; + return false; + } + return null; + } var defaultConstruct = CheckForDefaultConstruct(desugared, expression, ref result); if (defaultConstruct != false) diff --git a/tests/CSharp/CSharp.Tests.cs b/tests/CSharp/CSharp.Tests.cs index 6ddc8cec..12b8c88a 100644 --- a/tests/CSharp/CSharp.Tests.cs +++ b/tests/CSharp/CSharp.Tests.cs @@ -216,6 +216,7 @@ public unsafe class CSharpTests : GeneratorTestFixture methodsWithDefaultValues.DefaultWithEnumInLowerCasedNameSpace(); methodsWithDefaultValues.DefaultWithCharFromInt(); methodsWithDefaultValues.DefaultWithFreeConstantInNameSpace(); + methodsWithDefaultValues.DefaultWithStdNumericLimits(5); } } diff --git a/tests/CSharp/CSharp.cpp b/tests/CSharp/CSharp.cpp index 3ba383e3..bfb76917 100644 --- a/tests/CSharp/CSharp.cpp +++ b/tests/CSharp/CSharp.cpp @@ -591,6 +591,10 @@ void MethodsWithDefaultValues::defaultWithFreeConstantInNameSpace(int c) { } +void MethodsWithDefaultValues::defaultWithStdNumericLimits(int i) +{ +} + int MethodsWithDefaultValues::getA() { return m_foo.A; diff --git a/tests/CSharp/CSharp.h b/tests/CSharp/CSharp.h index f3408394..a0cb5ad0 100644 --- a/tests/CSharp/CSharp.h +++ b/tests/CSharp/CSharp.h @@ -413,6 +413,7 @@ public: void defaultWithEnumInLowerCasedNameSpace(lowerCaseNameSpace::Enum e = lowerCaseNameSpace::Enum::Item2); void defaultWithCharFromInt(char c = 32); void defaultWithFreeConstantInNameSpace(int c = HasFreeConstant::FREE_CONSTANT_IN_NAMESPACE); + void defaultWithStdNumericLimits(int i = std::numeric_limits::infinity()); int getA(); private: Foo m_foo;