Resolve the name node for a field declaration, unwrapping C pointer/array declarators.
| 6202 | |
| 6203 | // Resolve the name node for a field declaration, unwrapping C pointer/array declarators. |
| 6204 | static TSNode resolve_field_name_node(TSNode child) { |
| 6205 | TSNode name_node = ts_node_child_by_field_name(child, TS_FIELD("declarator")); |
| 6206 | if (ts_node_is_null(name_node)) { |
| 6207 | name_node = ts_node_child_by_field_name(child, TS_FIELD("name")); |
| 6208 | } |
| 6209 | if (ts_node_is_null(name_node)) { |
| 6210 | TSNode null_node = {0}; |
| 6211 | return null_node; |
| 6212 | } |
| 6213 | const char *nk = ts_node_type(name_node); |
| 6214 | if (strcmp(nk, "pointer_declarator") == 0 || strcmp(nk, "array_declarator") == 0) { |
| 6215 | TSNode inner = ts_node_child_by_field_name(name_node, TS_FIELD("declarator")); |
| 6216 | if (!ts_node_is_null(inner)) { |
| 6217 | return inner; |
| 6218 | } |
| 6219 | TSNode null_node = {0}; |
| 6220 | return null_node; |
| 6221 | } |
| 6222 | return name_node; |
| 6223 | } |
| 6224 | |
| 6225 | /* Schema/grammar languages whose field node carries the field name on a plain |
| 6226 | * child (no C-style `declarator`/`type` field), so the generic field path below |
no outgoing calls
no test coverage detected