@@ -119,6 +119,37 @@ def test(self):
119119
120120 self .assertEqual (task_type , task_head_pointee_type )
121121
122+ # Check whether we can find a directly nested type by name
123+ name_type = task_type .FindDirectNestedType ("name" )
124+ self .assertTrue (name_type )
125+ self .DebugSBType (name_type )
126+
127+ enum_type = task_type .FindDirectNestedType ("E" )
128+ self .assertTrue (enum_type )
129+ self .DebugSBType (enum_type )
130+
131+ union_type = task_type .FindDirectNestedType ("U" )
132+ self .assertTrue (union_type )
133+ self .DebugSBType (union_type )
134+
135+ # Check that we don't find indirectly nested types
136+ self .assertTrue (enum_type .size == 1 )
137+
138+ invalid_type = task_type .FindDirectNestedType ("E2" )
139+ self .assertFalse (invalid_type )
140+
141+ # Check that FindDirectNestedType handles types without DeclContext
142+ # and other errorneous inputs
143+ task_ptr_type = task_type .GetPointerType ()
144+ invalid_type = task_ptr_type .FindDirectNestedType ("name" )
145+ self .assertFalse (invalid_type )
146+
147+ invalid_type = task_type .FindDirectNestedType ("" )
148+ self .assertFalse (invalid_type )
149+
150+ invalid_type = task_type .FindDirectNestedType (None )
151+ self .assertFalse (invalid_type )
152+
122153 # We'll now get the child member 'id' from 'task_head'.
123154 id = task_head .GetChildMemberWithName ("id" )
124155 self .DebugSBValue (id )
0 commit comments