Browse Source

Fixed the implementation of secondary bases with overloads caused by default values.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/534/head
Dimitar Dobrev 10 years ago
parent
commit
de02c1af27
  1. 3
      src/Generator/Passes/MultipleInheritancePass.cs
  2. 8
      tests/CSharpTemp/CSharpTemp.Tests.cs
  3. 6
      tests/CSharpTemp/CSharpTemp.cpp
  4. 3
      tests/CSharpTemp/CSharpTemp.h

3
src/Generator/Passes/MultipleInheritancePass.cs

@ -196,7 +196,8 @@ namespace CppSharp.Passes
foreach (var method in @interface.Methods) foreach (var method in @interface.Methods)
{ {
if (@class.Methods.Any(m => m.OriginalName == method.OriginalName && if (@class.Methods.Any(m => m.OriginalName == method.OriginalName &&
m.Parameters.SequenceEqual(method.Parameters, parameterTypeComparer))) m.Parameters.SequenceEqual(method.Parameters.Where(p => !p.Ignore),
parameterTypeComparer)))
continue; continue;
var impl = new Method(method) var impl = new Method(method)
{ {

8
tests/CSharpTemp/CSharpTemp.Tests.cs

@ -22,6 +22,14 @@ public class CSharpTempTests : GeneratorTestFixture
new InheritanceBuffer().Dispose(); new InheritanceBuffer().Dispose();
new HasProtectedVirtual().Dispose(); new HasProtectedVirtual().Dispose();
new Proprietor(5).Dispose(); new Proprietor(5).Dispose();
using (var testOverrideFromSecondaryBase = new TestOverrideFromSecondaryBase())
{
testOverrideFromSecondaryBase.function();
var ok = false;
testOverrideFromSecondaryBase.function(ref ok);
var property = testOverrideFromSecondaryBase.property;
testOverrideFromSecondaryBase.VirtualMember();
}
using (var foo = new Foo()) using (var foo = new Foo())
{ {
var isNoParams = foo.IsNoParams; var isNoParams = foo.IsNoParams;

6
tests/CSharpTemp/CSharpTemp.cpp

@ -585,7 +585,7 @@ void SecondaryBase::setProperty(int value)
{ {
} }
void SecondaryBase::function() void SecondaryBase::function(bool* ok)
{ {
} }
@ -602,6 +602,10 @@ void SecondaryBase::setProtectedProperty(int value)
{ {
} }
TestOverrideFromSecondaryBase::TestOverrideFromSecondaryBase()
{
}
void TestOverrideFromSecondaryBase::VirtualMember() void TestOverrideFromSecondaryBase::VirtualMember()
{ {
} }

3
tests/CSharpTemp/CSharpTemp.h

@ -573,7 +573,7 @@ public:
virtual void VirtualMember(); virtual void VirtualMember();
int property(); int property();
void setProperty(int value); void setProperty(int value);
void function(); void function(bool* ok = 0);
protected: protected:
void protectedFunction(); void protectedFunction();
int protectedProperty(); int protectedProperty();
@ -583,6 +583,7 @@ protected:
class DLL_API TestOverrideFromSecondaryBase : public Foo, public SecondaryBase class DLL_API TestOverrideFromSecondaryBase : public Foo, public SecondaryBase
{ {
public: public:
TestOverrideFromSecondaryBase();
void VirtualMember(); void VirtualMember();
void setProperty(int value); void setProperty(int value);
}; };

Loading…
Cancel
Save