From 277a6f5ac74474f883c4c1d1d1e7ae11345b117e Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Mon, 15 Jun 2015 00:59:35 +0300 Subject: [PATCH] Fixed default args with enum values when the enum is in a dependency. Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/HandleDefaultParamValuesPass.cs | 8 +++----- tests/NamespacesDerived/NamespacesDerived.cpp | 4 ++++ tests/NamespacesDerived/NamespacesDerived.cs | 2 +- tests/NamespacesDerived/NamespacesDerived.h | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Generator/Passes/HandleDefaultParamValuesPass.cs b/src/Generator/Passes/HandleDefaultParamValuesPass.cs index f021d448..71ff76ee 100644 --- a/src/Generator/Passes/HandleDefaultParamValuesPass.cs +++ b/src/Generator/Passes/HandleDefaultParamValuesPass.cs @@ -167,16 +167,14 @@ namespace CppSharp.Passes return decl.IsValueType ? true : (bool?) null; } - private static bool CheckForEnumValue(Expression arg, Type desugared) + private bool CheckForEnumValue(Expression arg, Type desugared) { var enumItem = arg.Declaration as Enumeration.Item; if (enumItem != null) { - arg.String = string.Format("{0}{1}{2}.{3}", + arg.String = string.Format("{0}{1}.{2}", desugared.IsPrimitiveType() ? "(int) " : string.Empty, - string.IsNullOrEmpty(enumItem.Namespace.Namespace.Name) - ? string.Empty - : enumItem.Namespace.Namespace.Name + ".", enumItem.Namespace.Name, enumItem.Name); + new CSharpTypePrinter(Driver).VisitEnumDecl((Enumeration) enumItem.Namespace), enumItem.Name); return true; } diff --git a/tests/NamespacesDerived/NamespacesDerived.cpp b/tests/NamespacesDerived/NamespacesDerived.cpp index 88c00324..13a5c624 100644 --- a/tests/NamespacesDerived/NamespacesDerived.cpp +++ b/tests/NamespacesDerived/NamespacesDerived.cpp @@ -58,3 +58,7 @@ void Derived2::setNestedNSComponent(OverlappingNamespace::InDerivedLib c) { nestedNSComponent = c; } + +void Derived2::defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c) +{ +} diff --git a/tests/NamespacesDerived/NamespacesDerived.cs b/tests/NamespacesDerived/NamespacesDerived.cs index 8addbe3a..7f10faf3 100644 --- a/tests/NamespacesDerived/NamespacesDerived.cs +++ b/tests/NamespacesDerived/NamespacesDerived.cs @@ -1,4 +1,3 @@ -using System; using CppSharp.AST; using CppSharp.Generators; using CppSharp.Utils; @@ -15,6 +14,7 @@ namespace CppSharp.Tests public override void SetupPasses(Driver driver) { + driver.Options.GenerateDefaultValuesForArguments = true; } public override void Preprocess(Driver driver, ASTContext ctx) diff --git a/tests/NamespacesDerived/NamespacesDerived.h b/tests/NamespacesDerived/NamespacesDerived.h index 5f4d5287..415f2fde 100644 --- a/tests/NamespacesDerived/NamespacesDerived.h +++ b/tests/NamespacesDerived/NamespacesDerived.h @@ -56,5 +56,5 @@ public: OverlappingNamespace::InDerivedLib nestedNSComponent; OverlappingNamespace::InDerivedLib getNestedNSComponent(); void setNestedNSComponent(OverlappingNamespace::InDerivedLib); - + void defaultEnumValueFromDependency(OverlappingNamespace::ColorsEnum c = OverlappingNamespace::ColorsEnum::black); };