From e33ae461b01bbd5e62cffbc260094aff53f20b2b Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Sat, 13 Jun 2015 01:05:41 +0300 Subject: [PATCH] Fixed a bug when a default arg of type double has a value ending with .0. Signed-off-by: Dimitar Dobrev --- .../Passes/HandleDefaultParamValuesPass.cs | 14 ++++++++++++-- tests/CSharpTemp/CSharpTemp.cpp | 4 ++++ tests/CSharpTemp/CSharpTemp.h | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Generator/Passes/HandleDefaultParamValuesPass.cs b/src/Generator/Passes/HandleDefaultParamValuesPass.cs index 4d5e97b0..f021d448 100644 --- a/src/Generator/Passes/HandleDefaultParamValuesPass.cs +++ b/src/Generator/Passes/HandleDefaultParamValuesPass.cs @@ -67,9 +67,19 @@ namespace CppSharp.Passes private void CheckFloatSyntax(Type desugared, Parameter parameter) { var builtin = desugared as BuiltinType; - if (builtin != null && builtin.Type == AST.PrimitiveType.Float && parameter.DefaultArgument.String.EndsWith(".F")) + if (builtin != null) { - parameter.DefaultArgument.String = parameter.DefaultArgument.String.Replace(".F", ".0F"); + switch (builtin.Type) + { + case PrimitiveType.Float: + if (parameter.DefaultArgument.String.EndsWith(".F")) + parameter.DefaultArgument.String = parameter.DefaultArgument.String.Replace(".F", ".0F"); + break; + case PrimitiveType.Double: + if (parameter.DefaultArgument.String.EndsWith(".")) + parameter.DefaultArgument.String += '0'; + break; + } } } diff --git a/tests/CSharpTemp/CSharpTemp.cpp b/tests/CSharpTemp/CSharpTemp.cpp index 50d29068..ffcd2292 100644 --- a/tests/CSharpTemp/CSharpTemp.cpp +++ b/tests/CSharpTemp/CSharpTemp.cpp @@ -366,6 +366,10 @@ void MethodsWithDefaultValues::defaultPointerToValueType(QGenericArgument* point { } +void MethodsWithDefaultValues::defaultDoubleWithoutF(double d1, double d2) +{ +} + int MethodsWithDefaultValues::getA() { return m_foo.A; diff --git a/tests/CSharpTemp/CSharpTemp.h b/tests/CSharpTemp/CSharpTemp.h index c7163e69..83ad63a9 100644 --- a/tests/CSharpTemp/CSharpTemp.h +++ b/tests/CSharpTemp/CSharpTemp.h @@ -279,6 +279,7 @@ public: void defaultRefTypeEnumImplicitCtor(const QColor &fillColor = Qt::white); void rotate4x4Matrix(float angle, float x, float y, float z = 0.0f); void defaultPointerToValueType(QGenericArgument* pointer = 0); + void defaultDoubleWithoutF(double d1 = 1.0, double d2 = 1.); int getA(); private: Foo m_foo;