Commit 9797271
fix: i18n ICU expression ordering with pipes (#5)
R3Icu used HashMap for vars and placeholders, which does not preserve
insertion order. JavaScript objects (used in Angular's ngtsc) do preserve
insertion order. When ICU cases share interpolation expressions, the
HashMap's non-deterministic iteration caused pipe expressions to be
emitted before plain expressions in the i18nExp chain.
Changed R3Icu.vars and R3Icu.placeholders from HashMap to ordered
Vec<(Atom, ...)> with deduplication helpers matching JS object semantics.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>1 parent ad9a858 commit 9797271
File tree
3 files changed
+101
-15
lines changed- crates/oxc_angular_compiler
- src
- ast
- transform
- tests
3 files changed
+101
-15
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1361 | 1361 | | |
1362 | 1362 | | |
1363 | 1363 | | |
1364 | | - | |
1365 | | - | |
1366 | | - | |
1367 | | - | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
1368 | 1368 | | |
1369 | 1369 | | |
1370 | 1370 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
102 | 130 | | |
103 | 131 | | |
104 | 132 | | |
| |||
1250 | 1278 | | |
1251 | 1279 | | |
1252 | 1280 | | |
1253 | | - | |
| 1281 | + | |
1254 | 1282 | | |
1255 | 1283 | | |
1256 | 1284 | | |
| |||
1262 | 1290 | | |
1263 | 1291 | | |
1264 | 1292 | | |
1265 | | - | |
| 1293 | + | |
1266 | 1294 | | |
1267 | 1295 | | |
1268 | 1296 | | |
| |||
1271 | 1299 | | |
1272 | 1300 | | |
1273 | 1301 | | |
1274 | | - | |
| 1302 | + | |
| 1303 | + | |
1275 | 1304 | | |
1276 | 1305 | | |
1277 | 1306 | | |
| |||
1290 | 1319 | | |
1291 | 1320 | | |
1292 | 1321 | | |
1293 | | - | |
1294 | | - | |
| 1322 | + | |
| 1323 | + | |
1295 | 1324 | | |
1296 | 1325 | | |
1297 | 1326 | | |
| |||
1335 | 1364 | | |
1336 | 1365 | | |
1337 | 1366 | | |
1338 | | - | |
| 1367 | + | |
1339 | 1368 | | |
1340 | 1369 | | |
1341 | | - | |
| 1370 | + | |
| 1371 | + | |
1342 | 1372 | | |
1343 | 1373 | | |
1344 | 1374 | | |
| |||
1357 | 1387 | | |
1358 | 1388 | | |
1359 | 1389 | | |
1360 | | - | |
| 1390 | + | |
1361 | 1391 | | |
1362 | 1392 | | |
1363 | 1393 | | |
| |||
1395 | 1425 | | |
1396 | 1426 | | |
1397 | 1427 | | |
1398 | | - | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
1399 | 1433 | | |
1400 | 1434 | | |
1401 | 1435 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
| 22 | + | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
3817 | 3817 | | |
3818 | 3818 | | |
3819 | 3819 | | |
| 3820 | + | |
| 3821 | + | |
| 3822 | + | |
| 3823 | + | |
| 3824 | + | |
| 3825 | + | |
| 3826 | + | |
| 3827 | + | |
| 3828 | + | |
| 3829 | + | |
| 3830 | + | |
| 3831 | + | |
| 3832 | + | |
| 3833 | + | |
| 3834 | + | |
| 3835 | + | |
| 3836 | + | |
| 3837 | + | |
| 3838 | + | |
| 3839 | + | |
| 3840 | + | |
| 3841 | + | |
| 3842 | + | |
| 3843 | + | |
| 3844 | + | |
| 3845 | + | |
| 3846 | + | |
| 3847 | + | |
| 3848 | + | |
| 3849 | + | |
| 3850 | + | |
| 3851 | + | |
| 3852 | + | |
| 3853 | + | |
| 3854 | + | |
| 3855 | + | |
| 3856 | + | |
| 3857 | + | |
| 3858 | + | |
| 3859 | + | |
| 3860 | + | |
| 3861 | + | |
| 3862 | + | |
| 3863 | + | |
| 3864 | + | |
| 3865 | + | |
| 3866 | + | |
| 3867 | + | |
| 3868 | + | |
| 3869 | + | |
| 3870 | + | |
| 3871 | + | |
3820 | 3872 | | |
3821 | 3873 | | |
3822 | 3874 | | |
| |||
0 commit comments