MCPcopy
hub / github.com/sveltejs/svelte / unwrap_pattern

Function unwrap_pattern

packages/svelte/src/compiler/utils/ast.js:89–129  ·  view source on GitHub ↗
(pattern, nodes = [])

Source from the content-addressed store, hash-verified

87 * @returns {Array<ESTree.Identifier | ESTree.MemberExpression>}
88 */
89export function unwrap_pattern(pattern, nodes = []) {
90 switch (pattern.type) {
91 case 'Identifier':
92 nodes.push(pattern);
93 break;
94
95 case 'MemberExpression':
96 // member expressions can be part of an assignment pattern, but not a binding pattern
97 // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#binding_and_assignment
98 nodes.push(pattern);
99 break;
100
101 case 'ObjectPattern':
102 for (const prop of pattern.properties) {
103 if (prop.type === 'RestElement') {
104 unwrap_pattern(prop.argument, nodes);
105 } else {
106 unwrap_pattern(prop.value, nodes);
107 }
108 }
109
110 break;
111
112 case 'ArrayPattern':
113 for (const element of pattern.elements) {
114 if (element) unwrap_pattern(element, nodes);
115 }
116
117 break;
118
119 case 'RestElement':
120 unwrap_pattern(pattern.argument, nodes);
121 break;
122
123 case 'AssignmentPattern':
124 unwrap_pattern(pattern.left, nodes);
125 break;
126 }
127
128 return nodes;
129}
130
131/**
132 * Extracts all identifiers from a pattern.

Callers 3

create_scopesFunction · 0.90
updateFunction · 0.90
extract_identifiersFunction · 0.85

Calls 1

pushMethod · 0.80

Tested by

no test coverage detected