mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
For two-way-bindings that use the banana-in-a-box syntax, the compiler synthesizes an event assignment expression from the primary expression. It is valid for the primary expression to be terminated by the non-null operator, however naive string substitution is used for the synthesized expression, such that the `!` would immediately precede the `=` token, resulting in the valid `!=` operator token. The expression would still parse correctly but it doesn't implement the proper semantics, resulting in incorrect runtime behavior. Changing the expression substitution to force a space between the primary expression and the assignment avoids this mistake, but it uncovers a new issue. The grammar does not allow for the LHS of an assignment to be the non-null operator, so the synthesized expression would fail to parse. To alleviate this, the synthesized expression is parsed with a special parser flag to allow for this syntax. Fixes #36551 PR Close #37809 |
||
|---|---|---|
| .. | ||
| utils | ||
| ast_spec.ts | ||
| BUILD.bazel | ||
| lexer_spec.ts | ||
| parser_spec.ts | ||