Commit c5c20e9
fix(compiler-cli): check event side of two-way bindings (#59002)
In the past two-way bindings used to be interpreted as `foo = $event` at the parser level. In #54065 it was changed to preserve the actual expression, because it was problematic for supporting two-way binding to signals. This unintentionally ended up causing the TCB to two-way bindings to look something like `someOutput.subscribe($event => expr);` which does nothing. It largely hasn't been a problem, because the input side of two-way bindings was still being checked, except for the case where the input side of the two-way binding has a wider type than the output side.
These changes re-add type checking for the output side by generating the following TCB instead:
```
someOutput.subscribe($event => {
var _t1 = unwrapSignalValue(this.someField);
_t1 = $event;
});
```
PR Close #590021 parent 68c5e02 commit c5c20e9
File tree
10 files changed
+159
-44
lines changed- packages
- compiler-cli
- src/ngtsc/typecheck
- src
- test
- test/ngtsc
- language-service/test
10 files changed
+159
-44
lines changedLines changed: 27 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3092 | 3092 | | |
3093 | 3093 | | |
3094 | 3094 | | |
| 3095 | + | |
| 3096 | + | |
| 3097 | + | |
| 3098 | + | |
| 3099 | + | |
| 3100 | + | |
| 3101 | + | |
| 3102 | + | |
| 3103 | + | |
| 3104 | + | |
| 3105 | + | |
| 3106 | + | |
| 3107 | + | |
| 3108 | + | |
| 3109 | + | |
| 3110 | + | |
| 3111 | + | |
| 3112 | + | |
| 3113 | + | |
| 3114 | + | |
| 3115 | + | |
| 3116 | + | |
| 3117 | + | |
| 3118 | + | |
3095 | 3119 | | |
3096 | 3120 | | |
3097 | 3121 | | |
| |||
3106 | 3130 | | |
3107 | 3131 | | |
3108 | 3132 | | |
3109 | | - | |
| 3133 | + | |
3110 | 3134 | | |
3111 | 3135 | | |
3112 | | - | |
| 3136 | + | |
3113 | 3137 | | |
3114 | 3138 | | |
3115 | 3139 | | |
| |||
3128 | 3152 | | |
3129 | 3153 | | |
3130 | 3154 | | |
3131 | | - | |
| 3155 | + | |
3132 | 3156 | | |
3133 | 3157 | | |
3134 | 3158 | | |
| |||
Lines changed: 28 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
381 | 381 | | |
382 | 382 | | |
383 | 383 | | |
384 | | - | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
385 | 388 | | |
386 | 389 | | |
387 | 390 | | |
| |||
405 | 408 | | |
406 | 409 | | |
407 | 410 | | |
408 | | - | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
409 | 415 | | |
410 | 416 | | |
411 | 417 | | |
| |||
426 | 432 | | |
427 | 433 | | |
428 | 434 | | |
429 | | - | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
430 | 439 | | |
431 | 440 | | |
432 | 441 | | |
| |||
450 | 459 | | |
451 | 460 | | |
452 | 461 | | |
453 | | - | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
454 | 466 | | |
455 | 467 | | |
456 | 468 | | |
| |||
583 | 595 | | |
584 | 596 | | |
585 | 597 | | |
586 | | - | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
587 | 602 | | |
588 | 603 | | |
589 | 604 | | |
| |||
652 | 667 | | |
653 | 668 | | |
654 | 669 | | |
655 | | - | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
656 | 674 | | |
657 | 675 | | |
658 | 676 | | |
| |||
662 | 680 | | |
663 | 681 | | |
664 | 682 | | |
| 683 | + | |
665 | 684 | | |
666 | 685 | | |
667 | 686 | | |
| |||
682 | 701 | | |
683 | 702 | | |
684 | 703 | | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
685 | 707 | | |
686 | 708 | | |
687 | 709 | | |
| |||
Lines changed: 4 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
35 | 38 | | |
36 | 39 | | |
37 | 40 | | |
| |||
Lines changed: 17 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
717 | 717 | | |
718 | 718 | | |
719 | 719 | | |
| 720 | + | |
| 721 | + | |
720 | 722 | | |
721 | 723 | | |
722 | 724 | | |
| |||
739 | 741 | | |
740 | 742 | | |
741 | 743 | | |
| 744 | + | |
| 745 | + | |
742 | 746 | | |
743 | 747 | | |
744 | 748 | | |
| |||
765 | 769 | | |
766 | 770 | | |
767 | 771 | | |
| 772 | + | |
| 773 | + | |
768 | 774 | | |
769 | 775 | | |
770 | 776 | | |
| |||
806 | 812 | | |
807 | 813 | | |
808 | 814 | | |
| 815 | + | |
| 816 | + | |
809 | 817 | | |
810 | 818 | | |
811 | 819 | | |
| |||
1733 | 1741 | | |
1734 | 1742 | | |
1735 | 1743 | | |
1736 | | - | |
| 1744 | + | |
1737 | 1745 | | |
1738 | | - | |
| 1746 | + | |
1739 | 1747 | | |
1740 | 1748 | | |
1741 | | - | |
| 1749 | + | |
1742 | 1750 | | |
1743 | 1751 | | |
1744 | | - | |
| 1752 | + | |
1745 | 1753 | | |
1746 | 1754 | | |
1747 | 1755 | | |
| |||
1830 | 1838 | | |
1831 | 1839 | | |
1832 | 1840 | | |
1833 | | - | |
1834 | | - | |
1835 | | - | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
1836 | 1846 | | |
1837 | 1847 | | |
1838 | 1848 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
259 | | - | |
| 259 | + | |
260 | 260 | | |
| 261 | + | |
261 | 262 | | |
262 | 263 | | |
263 | 264 | | |
| |||
Lines changed: 22 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
298 | 298 | | |
299 | 299 | | |
300 | 300 | | |
301 | | - | |
| 301 | + | |
302 | 302 | | |
| 303 | + | |
303 | 304 | | |
304 | 305 | | |
305 | 306 | | |
| |||
328 | 329 | | |
329 | 330 | | |
330 | 331 | | |
331 | | - | |
| 332 | + | |
332 | 333 | | |
| 334 | + | |
333 | 335 | | |
334 | 336 | | |
335 | 337 | | |
| |||
359 | 361 | | |
360 | 362 | | |
361 | 363 | | |
362 | | - | |
| 364 | + | |
363 | 365 | | |
| 366 | + | |
364 | 367 | | |
365 | 368 | | |
366 | 369 | | |
| |||
389 | 392 | | |
390 | 393 | | |
391 | 394 | | |
392 | | - | |
| 395 | + | |
393 | 396 | | |
394 | 397 | | |
395 | 398 | | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
396 | 402 | | |
397 | 403 | | |
398 | 404 | | |
| |||
513 | 519 | | |
514 | 520 | | |
515 | 521 | | |
516 | | - | |
| 522 | + | |
517 | 523 | | |
518 | 524 | | |
519 | 525 | | |
520 | 526 | | |
521 | 527 | | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
522 | 533 | | |
523 | 534 | | |
524 | 535 | | |
| |||
547 | 558 | | |
548 | 559 | | |
549 | 560 | | |
550 | | - | |
| 561 | + | |
551 | 562 | | |
552 | 563 | | |
553 | 564 | | |
554 | 565 | | |
555 | 566 | | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
556 | 572 | | |
557 | 573 | | |
558 | 574 | | |
| |||
Lines changed: 41 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
568 | 568 | | |
569 | 569 | | |
570 | 570 | | |
571 | | - | |
| 571 | + | |
572 | 572 | | |
573 | 573 | | |
574 | 574 | | |
575 | 575 | | |
576 | 576 | | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
577 | 582 | | |
578 | 583 | | |
579 | 584 | | |
| |||
603 | 608 | | |
604 | 609 | | |
605 | 610 | | |
606 | | - | |
| 611 | + | |
607 | 612 | | |
608 | 613 | | |
609 | 614 | | |
| |||
639 | 644 | | |
640 | 645 | | |
641 | 646 | | |
642 | | - | |
| 647 | + | |
643 | 648 | | |
644 | 649 | | |
645 | 650 | | |
646 | 651 | | |
647 | 652 | | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
648 | 686 | | |
649 | 687 | | |
650 | 688 | | |
| |||
0 commit comments