tree-sitters/javascript/test/corpus/destructuring.txt
2023-12-21 14:00:00 +01:00

112 lines
3.3 KiB
Plaintext

============================================
Object destructuring assignments
============================================
({a, b: c.d, ...e[f]} = object);
let {a, b, ...c} = object
const {a, b: {c, d}} = object
---
(program
(expression_statement (parenthesized_expression (assignment_expression
(object_pattern
(shorthand_property_identifier_pattern)
(pair_pattern
(property_identifier)
(member_expression (identifier) (property_identifier)))
(rest_pattern (subscript_expression (identifier) (identifier))))
(identifier))))
(lexical_declaration (variable_declarator
(object_pattern
(shorthand_property_identifier_pattern)
(shorthand_property_identifier_pattern)
(rest_pattern (identifier)))
(identifier)))
(lexical_declaration (variable_declarator
(object_pattern
(shorthand_property_identifier_pattern)
(pair_pattern
(property_identifier)
(object_pattern
(shorthand_property_identifier_pattern)
(shorthand_property_identifier_pattern))))
(identifier))))
============================================
Object destructuring parameters
============================================
function a ({b, c}, {d}) {}
---
(program
(function_declaration (identifier)
(formal_parameters
(object_pattern (shorthand_property_identifier_pattern) (shorthand_property_identifier_pattern))
(object_pattern (shorthand_property_identifier_pattern)))
(statement_block)))
============================================
Array destructuring assignments
============================================
[a, b.c, ...c[d]] = array;
[a, b, ...c] = array;
[,, c,, d,] = array;
---
(program
(expression_statement (assignment_expression
(array_pattern
(identifier)
(member_expression (identifier) (property_identifier))
(rest_pattern (subscript_expression (identifier) (identifier))))
(identifier)))
(expression_statement (assignment_expression
(array_pattern
(identifier)
(identifier)
(rest_pattern (identifier)))
(identifier)))
(expression_statement (assignment_expression
(array_pattern
(identifier)
(identifier))
(identifier))))
================================================
Object destructuring patterns w/ default values
================================================
let {a: b = c} = object;
for await (var {a: {b} = object} of asyncIter) {}
function a({b = true}, [c, d = false]) {}
function b({c} = {}) {}
---
(program
(lexical_declaration (variable_declarator
(object_pattern (pair_pattern
(property_identifier)
(assignment_pattern (identifier) (identifier))))
(identifier)))
(for_in_statement
(object_pattern (pair_pattern
(property_identifier)
(assignment_pattern (object_pattern (shorthand_property_identifier_pattern)) (identifier))))
(identifier)
(statement_block))
(function_declaration (identifier)
(formal_parameters
(object_pattern (object_assignment_pattern (shorthand_property_identifier_pattern) (true)))
(array_pattern (identifier) (assignment_pattern (identifier) (false))))
(statement_block))
(function_declaration (identifier)
(formal_parameters
(assignment_pattern (object_pattern (shorthand_property_identifier_pattern)) (object)))
(statement_block)))