Browse Source

Fixed implicit class record walking in the parser.

pull/970/head
Joao Matos 8 years ago committed by João Matos
parent
commit
231e164a00
  1. 6
      src/CppParser/Parser.cpp
  2. 8
      src/Generator.Tests/AST/TestAST.cs
  3. 4
      tests/Native/AST.h

6
src/CppParser/Parser.cpp

@ -898,6 +898,12 @@ void Parser::WalkRecord(const clang::RecordDecl* Record, Class* RC) @@ -898,6 +898,12 @@ void Parser::WalkRecord(const clang::RecordDecl* Record, Class* RC)
}
case Decl::IndirectField: // FIXME: Handle indirect fields
break;
case Decl::CXXRecord:
// Handle implicit records inside the class.
if (D->isImplicit())
continue;
WalkDeclaration(D);
break;
default:
{
WalkDeclaration(D);

8
src/Generator.Tests/AST/TestAST.cs

@ -562,5 +562,13 @@ namespace CppSharp.Generator.Tests.AST @@ -562,5 +562,13 @@ namespace CppSharp.Generator.Tests.AST
foreach (var constructor in template.Constructors)
Assert.That(constructor.Name, Is.EqualTo("TestTemplateClass<T>"));
}
[Test]
public void TestClassContext()
{
var @class = AstContext.FindClass("ClassA").First();
Assert.That(@class.Classes.Count, Is.EqualTo(0));
Assert.That(@class.Redeclarations.Count, Is.EqualTo(1));
}
}
}

4
tests/Native/AST.h

@ -219,3 +219,7 @@ void testInlineAssembly() @@ -219,3 +219,7 @@ void testInlineAssembly()
asm("mov eax, 1");
#endif
}
class ClassA
{
};

Loading…
Cancel
Save