Browse Source

Fixed the generated code in a case of ambiguous overloads.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1156/head
Dimitar Dobrev 8 years ago
parent
commit
202ae75df4
  1. 2
      src/AST/Type.cs
  2. 4
      tests/Common/Common.Tests.cs
  3. 8
      tests/Common/Common.cpp
  4. 2
      tests/Common/Common.h

2
src/AST/Type.cs

@ -356,7 +356,7 @@ namespace CppSharp.AST
var type = obj as PointerType; var type = obj as PointerType;
if (type == null) return false; if (type == null) return false;
return QualifiedPointee.Equals(type.QualifiedPointee) return Pointee.Equals(type.Pointee)
&& Modifier == type.Modifier; && Modifier == type.Modifier;
} }

4
tests/Common/Common.Tests.cs

@ -24,6 +24,10 @@ public class CommonTests : GeneratorTestFixture
{ {
Bar bar = foo; Bar bar = foo;
Assert.IsTrue(Bar.Item.Item1 == bar); Assert.IsTrue(Bar.Item.Item1 == bar);
using (var hasOverloadsWithDifferentPointerKindsToSameType =
new HasOverloadsWithDifferentPointerKindsToSameType())
hasOverloadsWithDifferentPointerKindsToSameType.Overload(foo, 0);
} }
using (var overridesNonDirectVirtual = new OverridesNonDirectVirtual()) using (var overridesNonDirectVirtual = new OverridesNonDirectVirtual())
{ {

8
tests/Common/Common.cpp

@ -845,6 +845,14 @@ void HasOverloadsWithDifferentPointerKindsToSameType::overload(const int& i)
{ {
} }
void HasOverloadsWithDifferentPointerKindsToSameType::overload(const Foo& rx, int from)
{
}
void HasOverloadsWithDifferentPointerKindsToSameType::overload(Foo& rx, int from)
{
}
void HasOverloadsWithDifferentPointerKindsToSameType::dispose() void HasOverloadsWithDifferentPointerKindsToSameType::dispose()
{ {
} }

2
tests/Common/Common.h

@ -1308,6 +1308,8 @@ public:
void overload(int& i); void overload(int& i);
void overload(int&& i); void overload(int&& i);
void overload(const int& i); void overload(const int& i);
void overload(const Foo& rx, int from = -1);
void overload(Foo& rx, int from = -1);
void dispose(); void dispose();
}; };

Loading…
Cancel
Save