diff --git a/test/scripts/typeinfo.py b/test/scripts/typeinfo.py index af64330..8afa367 100644 --- a/test/scripts/typeinfo.py +++ b/test/scripts/typeinfo.py @@ -44,3 +44,13 @@ class TypeInfoTest( unittest.TestCase ): ti3 = pykd.typeInfo( target.moduleName, "Namespace3::Class3" ) var5 = pykd.typedVar( ti3, pykd.getOffset( target.moduleName, "Namespace3::var5" ) ) self.assertEqual( var5.m_field1, 5 ) + + def testNestedStruct(self): + ti4 = pykd.typeInfo( target.moduleName, "Type4" ) + self.assertTrue( hasattr( ti4, "field1" ) ) + self.assertTrue( hasattr( ti4, "field2" ) ) + self.assertTrue( hasattr( ti4, "field3" ) ) + self.assertTrue( hasattr( ti4, "field4" ) ) + self.assertTrue( hasattr( ti4, "field4" ) ) + self.assertTrue( hasattr( ti4.field4, "field41" ) ) + diff --git a/test/targetapp/types.cpp b/test/targetapp/types.cpp index b7ef437..283a2ba 100644 --- a/test/targetapp/types.cpp +++ b/test/targetapp/types.cpp @@ -43,6 +43,7 @@ Type2 var2 = { Enum1Val1 }; /////////////////////////////////////////////////////////////////////////////// + namespace Namespace1 { @@ -101,4 +102,31 @@ namespace Namespace3 Class3 var5(5); }; +/////////////////////////////////////////////////////////////////////////////// + +#pragma pack( push, 4 ) + +struct Type4 +{ + int field1; + + struct { + + int field2; + + int field3; + }; + + struct { + + int field41; + + } field4; + +}; + +Type4 var4 = {}; + +#pragma pack( pop ) + /////////////////////////////////////////////////////////////////////////////// \ No newline at end of file