Pattern name^: value
binds name
, while name: value
never does (except for identifiers)
#1663
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1660 by no longer binding
name
in object pattern properties with literal values:name: "string"
,name: 42
, orname: /regex/
. The general rule is now this: if a property has a value (other than an identifier), then it doesn't get bound. This seems like a natural extension of how destructuring assignment works.New feature
name^: value
bindsname
. This also works when checking other properties. For example, the pattern{parent^: {type: "BlockStatement", expressions}}
bindsparent
andexpression
in two destructurings:{parent} = x, {expressions} = parent
.BREAKING CHANGE: Pattern matching with
{name: literal}
no longer bindsname
; use{name^: literal}
to bind.