@@ -119,6 +119,37 @@ def test(self):
119
119
120
120
self .assertEqual (task_type , task_head_pointee_type )
121
121
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
+
122
153
# We'll now get the child member 'id' from 'task_head'.
123
154
id = task_head .GetChildMemberWithName ("id" )
124
155
self .DebugSBValue (id )
0 commit comments