From ebd692e6aacfe01f90d760a47884789200024fed Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Mon, 20 Jan 2014 21:41:24 +0200 Subject: [PATCH] Fixed the renaming pass to consider forward declarations and function type defs. Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/RenamePass.cs | 6 +++++- tests/CSharpTemp/CSharpTemp.h | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Generator/Passes/RenamePass.cs b/src/Generator/Passes/RenamePass.cs index 0008cdee..e594099a 100644 --- a/src/Generator/Passes/RenamePass.cs +++ b/src/Generator/Passes/RenamePass.cs @@ -85,11 +85,15 @@ namespace CppSharp.Passes private static bool AreThereConflicts(Declaration decl, string newName) { var declarations = new List(); - declarations.AddRange(decl.Namespace.Classes); + declarations.AddRange(decl.Namespace.Classes.Where(c => !c.IsIncomplete)); declarations.AddRange(decl.Namespace.Enums); declarations.AddRange(decl.Namespace.Events); declarations.AddRange(decl.Namespace.Functions); declarations.AddRange(decl.Namespace.Variables); + declarations.AddRange(from typedefDecl in decl.Namespace.Typedefs + let pointerType = typedefDecl.Type.Desugar() as PointerType + where pointerType != null && pointerType.Pointee is FunctionType + select typedefDecl); var result = declarations.Any(d => d != decl && d.Name == newName); if (result) diff --git a/tests/CSharpTemp/CSharpTemp.h b/tests/CSharpTemp/CSharpTemp.h index 7e187858..60b6b484 100644 --- a/tests/CSharpTemp/CSharpTemp.h +++ b/tests/CSharpTemp/CSharpTemp.h @@ -51,6 +51,9 @@ public: int takesQux(const Qux& qux); Qux returnQux(); + + typedef bool (*FunctionTypedef)(const void *); + FunctionTypedef functionTypedef; }; struct QArrayData