fix(ts): Allow parenthesized "assert and assign" (#12933)

Co-authored-by: Nicolò Ribaudo <7000710+nicolo-ribaudo@users.noreply.github.com>
This commit is contained in:
Federico Ciardi
2021-03-22 17:00:03 +01:00
committed by GitHub
parent 69e22c325d
commit 4f727139ec
19 changed files with 306 additions and 0 deletions

View File

@@ -2701,6 +2701,8 @@ export default (superClass: Class<Parser>): Class<Parser> =>
return super.toAssignable(this.typeCastToParameter(node), isLHS);
case "TSParameterProperty":
return super.toAssignable(node, isLHS);
case "ParenthesizedExpression":
return this.toAssignableParenthesizedExpression(node, isLHS);
case "TSAsExpression":
case "TSNonNullExpression":
case "TSTypeAssertion":
@@ -2711,6 +2713,19 @@ export default (superClass: Class<Parser>): Class<Parser> =>
}
}
toAssignableParenthesizedExpression(node: N.Node, isLHS: boolean) {
switch (node.expression.type) {
case "TSAsExpression":
case "TSNonNullExpression":
case "TSTypeAssertion":
case "ParenthesizedExpression":
node.expression = this.toAssignable(node.expression, isLHS);
return node;
default:
return super.toAssignable(node, isLHS);
}
}
checkLVal(
expr: N.Expression,
contextDescription: string,