(expr)
| 981 | // https://tc39.github.io/ecma262/#sec-grouping-operator |
| 982 | |
| 983 | reinterpretExpressionAsPattern(expr) { |
| 984 | switch (expr.type) { |
| 985 | case Syntax.Identifier: |
| 986 | case Syntax.MemberExpression: |
| 987 | case Syntax.RestElement: |
| 988 | case Syntax.AssignmentPattern: |
| 989 | break; |
| 990 | case Syntax.SpreadElement: |
| 991 | expr.type = Syntax.RestElement; |
| 992 | this.reinterpretExpressionAsPattern(expr.argument); |
| 993 | break; |
| 994 | case Syntax.ArrayExpression: |
| 995 | expr.type = Syntax.ArrayPattern; |
| 996 | for (let i = 0; i < expr.elements.length; i++) { |
| 997 | if (expr.elements[i] !== null) { |
| 998 | this.reinterpretExpressionAsPattern(expr.elements[i]); |
| 999 | } |
| 1000 | } |
| 1001 | break; |
| 1002 | case Syntax.ObjectExpression: |
| 1003 | expr.type = Syntax.ObjectPattern; |
| 1004 | for (let i = 0; i < expr.properties.length; i++) { |
| 1005 | this.reinterpretExpressionAsPattern(expr.properties[i].value); |
| 1006 | } |
| 1007 | break; |
| 1008 | case Syntax.AssignmentExpression: |
| 1009 | expr.type = Syntax.AssignmentPattern; |
| 1010 | delete expr.operator; |
| 1011 | this.reinterpretExpressionAsPattern(expr.left); |
| 1012 | break; |
| 1013 | default: |
| 1014 | // Allow other node type for tolerant parsing. |
| 1015 | break; |
| 1016 | } |
| 1017 | } |
| 1018 | |
| 1019 | parseGroupExpression(): ArrowParameterPlaceHolderNode | Node.Expression { |
| 1020 | let expr; |
no outgoing calls
no test coverage detected