Commit 55a0237
committed
Fix issue that caused errors thrown from macro expansion to show up twice in MacroSystem
If the macro expansion of a freestanding expression macro throws an error, `expandCodeBlockItem` returned `nil` while adding the thrown error to the macro expansion context. `visit(_:CodeBlockItemListSyntax).addResult` took the `nil` return value as an indicator that the macro wasn’t expanded because its macro definition wasn’t found and ended up calling the expansion again in
```swift
// Recurse on the child node
newItems.append(visit(node))
```
Change the return value of `expandCodeBlockItem` to an enum that indicates whether the macro was not found or if the expansion failed. If the macro was found but the expansion threw an error, we just just retain the macro as-is without calling into `visit` again.
Fixes #2111
rdar://1145924101 parent 0687ad0 commit 55a0237
File tree
2 files changed
+164
-17
lines changed- Sources/SwiftSyntaxMacroExpansion
- Tests/SwiftSyntaxMacroExpansionTest
2 files changed
+164
-17
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
485 | 485 | | |
486 | 486 | | |
487 | 487 | | |
488 | | - | |
| 488 | + | |
| 489 | + | |
489 | 490 | | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
490 | 495 | | |
491 | | - | |
492 | 496 | | |
493 | 497 | | |
494 | 498 | | |
| |||
510 | 514 | | |
511 | 515 | | |
512 | 516 | | |
513 | | - | |
| 517 | + | |
| 518 | + | |
514 | 519 | | |
515 | 520 | | |
516 | 521 | | |
517 | 522 | | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
518 | 530 | | |
519 | 531 | | |
520 | | - | |
521 | | - | |
522 | | - | |
523 | 532 | | |
524 | 533 | | |
525 | 534 | | |
| |||
552 | 561 | | |
553 | 562 | | |
554 | 563 | | |
555 | | - | |
| 564 | + | |
| 565 | + | |
556 | 566 | | |
557 | 567 | | |
558 | 568 | | |
559 | 569 | | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
560 | 575 | | |
561 | 576 | | |
562 | | - | |
563 | | - | |
564 | | - | |
565 | 577 | | |
566 | 578 | | |
567 | 579 | | |
| |||
842 | 854 | | |
843 | 855 | | |
844 | 856 | | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
845 | 869 | | |
846 | 870 | | |
847 | 871 | | |
848 | | - | |
| 872 | + | |
849 | 873 | | |
850 | 874 | | |
851 | 875 | | |
852 | | - | |
| 876 | + | |
853 | 877 | | |
854 | 878 | | |
855 | | - | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
856 | 884 | | |
857 | 885 | | |
858 | | - | |
| 886 | + | |
859 | 887 | | |
860 | 888 | | |
861 | 889 | | |
| |||
867 | 895 | | |
868 | 896 | | |
869 | 897 | | |
870 | | - | |
| 898 | + | |
871 | 899 | | |
872 | 900 | | |
873 | 901 | | |
| |||
886 | 914 | | |
887 | 915 | | |
888 | 916 | | |
889 | | - | |
| 917 | + | |
890 | 918 | | |
891 | 919 | | |
892 | 920 | | |
| |||
904 | 932 | | |
905 | 933 | | |
906 | 934 | | |
907 | | - | |
| 935 | + | |
908 | 936 | | |
909 | 937 | | |
910 | 938 | | |
| |||
Lines changed: 119 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1775 | 1775 | | |
1776 | 1776 | | |
1777 | 1777 | | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
1778 | 1897 | | |
0 commit comments