Browse Source

Resolve overloads with typedef-ed mapped params

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1632/head
Dimitar Dobrev 4 years ago
parent
commit
0255eb732d
  1. 10
      src/Generator/Passes/CheckAmbiguousFunctions.cs
  2. 1
      tests/CSharp/CSharp.Tests.cs
  3. 10
      tests/CSharp/CSharp.cpp
  4. 3
      tests/CSharp/CSharp.h

10
src/Generator/Passes/CheckAmbiguousFunctions.cs

@ -80,15 +80,17 @@ namespace CppSharp.Passes @@ -80,15 +80,17 @@ namespace CppSharp.Passes
var i = 0;
for (; i < commonParameters; ++i)
{
AST.Type funcType = functionParams[i].Type.GetMappedType(
AST.Type funcOriginalType = functionParams[i].Type.Desugar();
AST.Type funcType = funcOriginalType.GetMappedType(
TypeMaps, Options.GeneratorKind);
AST.Type overloadType = overloadParams[i].Type.GetMappedType(
AST.Type overloadOriginalType = overloadParams[i].Type.Desugar();
AST.Type overloadType = overloadOriginalType.GetMappedType(
TypeMaps, Options.GeneratorKind);
if (!funcType.Equals(functionParams[i].Type.Desugar()))
if (!funcType.Equals(funcOriginalType))
functionMappedParams++;
if (!overloadType.Equals(overloadParams[i].Type.Desugar()))
if (!overloadType.Equals(overloadOriginalType))
overloadMappedParams++;
AST.Type funcPointee = funcType.GetFinalPointee() ?? funcType;

1
tests/CSharp/CSharp.Tests.cs

@ -86,6 +86,7 @@ public unsafe class CSharpTests @@ -86,6 +86,7 @@ public unsafe class CSharpTests
}
CSharp.CSharp.FunctionInsideInlineNamespace();
CSharp.CSharp.TakeMappedEnum(TestFlag.Flag1);
using (CSharpTemplates.SpecialiseReturnOnly())
{
}

10
tests/CSharp/CSharp.cpp

@ -1860,6 +1860,14 @@ const Foo*& takeReturnReferenceToPointer(const Foo*& foo) @@ -1860,6 +1860,14 @@ const Foo*& takeReturnReferenceToPointer(const Foo*& foo)
return foo;
}
void takeMappedEnum(TestFlag value)
{
}
void takeMappedEnum(TestFlags value)
{
}
boolean_t takeTypemapTypedefParam(boolean_t b)
{
return b;
@ -1931,4 +1939,4 @@ const unsigned StructWithEmbeddedArrayOfStructObjectAlignmentOffsets[2] @@ -1931,4 +1939,4 @@ const unsigned StructWithEmbeddedArrayOfStructObjectAlignmentOffsets[2]
{
offsetof(StructWithEmbeddedArrayOfStructObjectAlignment, boolean),
offsetof(StructWithEmbeddedArrayOfStructObjectAlignment, embedded_struct),
};
};

3
tests/CSharp/CSharp.h

@ -1442,6 +1442,9 @@ DLL_API char* takeConstCharRef(const char& c); @@ -1442,6 +1442,9 @@ DLL_API char* takeConstCharRef(const char& c);
DLL_API const char*& takeConstCharStarRef(const char*& c);
DLL_API const void*& rValueReferenceToPointer(void*&& v);
DLL_API const Foo*& takeReturnReferenceToPointer(const Foo*& foo);
typedef QFlags<TestFlag> TestFlags;
DLL_API void takeMappedEnum(TestFlag value);
DLL_API void takeMappedEnum(TestFlags value);
struct {
struct {

Loading…
Cancel
Save