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 10 years ago
parent
commit
2624c91e75
  1. 5
      src/AST/Type.cs
  2. 5
      tests/Common/Common.Tests.cs
  3. 8
      tests/Common/Common.cpp
  4. 12
      tests/Common/Common.h

5
src/AST/Type.cs

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

5
tests/Common/Common.Tests.cs

@ -20,7 +20,10 @@ public class CommonTests : GeneratorTestFixture
} }
using (var overridesNonDirectVirtual = new OverridesNonDirectVirtual()) 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()) using (var derivedFromTemplateInstantiationWithVirtual = new DerivedFromTemplateInstantiationWithVirtual())
{ {

8
tests/Common/Common.cpp

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

12
tests/Common/Common.h

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

Loading…
Cancel
Save