Browse Source

Merge pull request #178 from ddobrev/master

Fixed the renaming pass to consider forward declarations and function type defs
pull/179/head
João Matos 12 years ago
parent
commit
da46d15b25
  1. 6
      src/Generator/Passes/RenamePass.cs
  2. 3
      tests/CSharpTemp/CSharpTemp.h

6
src/Generator/Passes/RenamePass.cs

@ -85,11 +85,15 @@ namespace CppSharp.Passes @@ -85,11 +85,15 @@ namespace CppSharp.Passes
private static bool AreThereConflicts(Declaration decl, string newName)
{
var declarations = new List<Declaration>();
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)

3
tests/CSharpTemp/CSharpTemp.h

@ -51,6 +51,9 @@ public: @@ -51,6 +51,9 @@ public:
int takesQux(const Qux& qux);
Qux returnQux();
typedef bool (*FunctionTypedef)(const void *);
FunctionTypedef functionTypedef;
};
struct QArrayData

Loading…
Cancel
Save