Browse Source

Fixed the comparison involving typedefs to use their real types.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/658/head
Dimitar Dobrev 9 years ago
parent
commit
2624c91e75
  1. 5
      src/AST/Type.cs
  2. 5
      tests/Common/Common.Tests.cs
  3. 14
      tests/Common/Common.cpp
  4. 12
      tests/Common/Common.h

5
src/AST/Type.cs

@ -418,10 +418,7 @@ namespace CppSharp.AST @@ -418,10 +418,7 @@ namespace CppSharp.AST
public override bool Equals(object obj)
{
var typedef = obj as TypedefType;
if (typedef == null) return false;
var t = Declaration.Equals(typedef.Declaration);
return t;
return Declaration.Type.Equals(typedef == null ? obj : typedef.Declaration.Type);
}
public override int GetHashCode()

5
tests/Common/Common.Tests.cs

@ -20,7 +20,10 @@ public class CommonTests : GeneratorTestFixture @@ -20,7 +20,10 @@ public class CommonTests : GeneratorTestFixture
}
using (var overridesNonDirectVirtual = new OverridesNonDirectVirtual())
{
Assert.That(overridesNonDirectVirtual.retInt(), Is.EqualTo(3));
using (var foo = new Foo())
{
Assert.That(overridesNonDirectVirtual.retInt(foo), Is.EqualTo(3));
}
}
using (var derivedFromTemplateInstantiationWithVirtual = new DerivedFromTemplateInstantiationWithVirtual())
{

14
tests/Common/Common.cpp

@ -544,26 +544,26 @@ HasProblematicFields HasVirtualReturningHasProblematicFields::returnsProblematic @@ -544,26 +544,26 @@ HasProblematicFields HasVirtualReturningHasProblematicFields::returnsProblematic
return HasProblematicFields();
}
int BaseClassVirtual::retInt()
int BaseClassVirtual::retInt(const Foo1& foo)
{
return 1;
return 1;
}
BaseClassVirtual BaseClassVirtual::getBase()
{
return DerivedClassVirtual();
return DerivedClassVirtual();
}
int DerivedClassVirtual::retInt()
int DerivedClassVirtual::retInt(const Foo2& foo)
{
return 2;
return 2;
}
DerivedClassOverrideAbstractVirtual::DerivedClassOverrideAbstractVirtual()
{
}
int DerivedClassOverrideAbstractVirtual::retInt()
int DerivedClassOverrideAbstractVirtual::retInt(const Foo& foo)
{
return 1;
}
@ -576,7 +576,7 @@ OverridesNonDirectVirtual::OverridesNonDirectVirtual() @@ -576,7 +576,7 @@ OverridesNonDirectVirtual::OverridesNonDirectVirtual()
{
}
int OverridesNonDirectVirtual::retInt()
int OverridesNonDirectVirtual::retInt(const Foo& foo)
{
return 3;
}

12
tests/Common/Common.h

@ -883,27 +883,29 @@ public: @@ -883,27 +883,29 @@ public:
class DLL_API BaseClassVirtual
{
public:
virtual int retInt();
typedef Foo Foo1;
virtual int retInt(const Foo1& foo);
static BaseClassVirtual getBase();
};
class DLL_API DerivedClassVirtual : public BaseClassVirtual
{
public:
virtual int retInt();
typedef Foo Foo2;
virtual int retInt(const Foo2& foo);
};
class DLL_API DerivedClassAbstractVirtual : public DerivedClassVirtual
{
public:
virtual int retInt() = 0;
virtual int retInt(const Foo& foo) = 0;
};
class DLL_API DerivedClassOverrideAbstractVirtual : public DerivedClassAbstractVirtual
{
public:
DerivedClassOverrideAbstractVirtual();
virtual int retInt();
virtual int retInt(const Foo& foo);
};
class DLL_API BufferForVirtualFunction : public BaseClassVirtual
@ -916,7 +918,7 @@ class DLL_API OverridesNonDirectVirtual : public BufferForVirtualFunction @@ -916,7 +918,7 @@ class DLL_API OverridesNonDirectVirtual : public BufferForVirtualFunction
{
public:
OverridesNonDirectVirtual();
virtual int retInt();
virtual int retInt(const Foo& foo);
};
namespace boost

Loading…
Cancel
Save