Browse Source

Fixed nested abstract classes to get internally implemented.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/516/head
Dimitar Dobrev 10 years ago
parent
commit
5c5c9b8698
  1. 8
      src/Generator/Passes/GenerateAbstractImplementationsPass.cs
  2. 1
      tests/Basic/Basic.Tests.cs
  3. 5
      tests/Basic/Basic.h

8
src/Generator/Passes/GenerateAbstractImplementationsPass.cs

@ -35,12 +35,12 @@ namespace CppSharp.Passes @@ -35,12 +35,12 @@ namespace CppSharp.Passes
public override bool VisitClassDecl(Class @class)
{
if (!base.VisitClassDecl(@class))
return false;
if (@class.CompleteDeclaration != null)
return VisitClassDecl(@class.CompleteDeclaration as Class);
if (!VisitDeclaration(@class))
return false;
if (@class.IsAbstract)
{
foreach (var ctor in from ctor in @class.Constructors
@ -50,7 +50,7 @@ namespace CppSharp.Passes @@ -50,7 +50,7 @@ namespace CppSharp.Passes
internalImpls.Add(AddInternalImplementation(@class));
}
return base.VisitClassDecl(@class);
return @class.IsAbstract;
}
private Class AddInternalImplementation(Class @class)

1
tests/Basic/Basic.Tests.cs

@ -11,6 +11,7 @@ public class BasicTests : GeneratorTestFixture @@ -11,6 +11,7 @@ public class BasicTests : GeneratorTestFixture
public void TestUncompilableCode()
{
Assert.That(new ChangedAccessOfInheritedProperty().Property, Is.EqualTo(2));
Foo.NestedAbstract a;
}
[Test]

5
tests/Basic/Basic.h

@ -15,6 +15,11 @@ private: @@ -15,6 +15,11 @@ private:
Value2
};
public:
class NestedAbstract
{
public:
virtual void abstractFunctionInNestedClass() = 0;
};
Foo();
Foo(Private p);

Loading…
Cancel
Save