Browse Source

Fixed the generation of copy ctors when mutiple inheritance is involved.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/332/head
Dimitar Dobrev 11 years ago
parent
commit
d2e01b1eda
  1. 3
      src/Generator/AST/Utils.cs
  2. 15
      tests/CSharpTemp/CSharpTemp.Tests.cs

3
src/Generator/AST/Utils.cs

@ -49,6 +49,8 @@ namespace CppSharp.AST @@ -49,6 +49,8 @@ namespace CppSharp.AST
while (baseClass != null && baseClass.HasBaseClass)
{
baseClass = baseClass.BaseClass;
if (!baseClass.IsInterface)
{
var copyConstructor = baseClass.Methods.FirstOrDefault(m => m.IsCopyConstructor);
if (copyConstructor == null
|| copyConstructor.Access == AccessSpecifier.Private
@ -56,6 +58,7 @@ namespace CppSharp.AST @@ -56,6 +58,7 @@ namespace CppSharp.AST
return true;
}
}
}
return false;
}

15
tests/CSharpTemp/CSharpTemp.Tests.cs

@ -156,4 +156,19 @@ public class CSharpTempTests : GeneratorTestFixture @@ -156,4 +156,19 @@ public class CSharpTempTests : GeneratorTestFixture
{
Assert.AreEqual(TestFlag.Flag2, new ComplexType().ReturnsQFlags);
}
[Test]
public void TestCopyCtor()
{
Qux q1 = new Qux();
for (int i = 0; i < q1.Array.Length; i++)
{
q1.Array[i] = i;
}
Qux q2 = new Qux(q1);
for (int i = 0; i < q2.Array.Length; i++)
{
Assert.AreEqual(q1.Array[i], q2.Array[i]);
}
}
}
Loading…
Cancel
Save