(param, nodes = [])
| 5612 | return extract_identifiers(param).map((node2) => node2.name); |
| 5613 | } |
| 5614 | function extract_identifiers(param, nodes = []) { |
| 5615 | switch (param.type) { |
| 5616 | case "Identifier": |
| 5617 | nodes.push(param); |
| 5618 | break; |
| 5619 | case "MemberExpression": |
| 5620 | let object = param; |
| 5621 | while (object.type === "MemberExpression") { |
| 5622 | object = object.object; |
| 5623 | } |
| 5624 | nodes.push(object); |
| 5625 | break; |
| 5626 | case "ObjectPattern": |
| 5627 | const handle_prop = (prop) => { |
| 5628 | if (prop.type === "RestElement") { |
| 5629 | extract_identifiers(prop.argument, nodes); |
| 5630 | } else { |
| 5631 | extract_identifiers(prop.value, nodes); |
| 5632 | } |
| 5633 | }; |
| 5634 | param.properties.forEach(handle_prop); |
| 5635 | break; |
| 5636 | case "ArrayPattern": |
| 5637 | const handle_element = (element) => { |
| 5638 | if (element) |
| 5639 | extract_identifiers(element, nodes); |
| 5640 | }; |
| 5641 | param.elements.forEach(handle_element); |
| 5642 | break; |
| 5643 | case "RestElement": |
| 5644 | extract_identifiers(param.argument, nodes); |
| 5645 | break; |
| 5646 | case "AssignmentPattern": |
| 5647 | extract_identifiers(param.left, nodes); |
| 5648 | break; |
| 5649 | } |
| 5650 | return nodes; |
| 5651 | } |
| 5652 | function push_array(array, items) { |
| 5653 | for (let i = 0; i < items.length; i++) { |
| 5654 | array.push(items[i]); |
no test coverage detected