Commit 1f26ddf
[ffi] Account for position variance in converting native types
This CL introduces variance-dependent treatment of the `Handle` native
type when converting native types to Dart types. Since `Handle` can
represent any object, it should match any type. To achive that in
cases when `Handle` appears as the subtype in the subtype checks, it's
converted to `Never` in covariant positions and to `Object?` in
covariant ones.
TEST=existing
Issue #49518
Change-Id: Ie16a210491ada80d21f4d0f1c0fa3b3804881ede
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/426880
Reviewed-by: Martin Kustermann <[email protected]>
Reviewed-by: Daco Harkes <[email protected]>
Commit-Queue: Chloe Stefantsova <[email protected]>1 parent 72b0d2d commit 1f26ddf
File tree
7 files changed
+226
-45
lines changed- pkg
- analyzer/lib/src/generated
- vm/lib/modular/transformations/ffi
- runtime/bin/ffi_test
- tests/ffi
- static_checks
7 files changed
+226
-45
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
729 | 729 | | |
730 | 730 | | |
731 | 731 | | |
732 | | - | |
733 | 732 | | |
734 | 733 | | |
735 | 734 | | |
| |||
1296 | 1295 | | |
1297 | 1296 | | |
1298 | 1297 | | |
1299 | | - | |
1300 | | - | |
1301 | 1298 | | |
1302 | 1299 | | |
1303 | 1300 | | |
1304 | 1301 | | |
1305 | 1302 | | |
1306 | | - | |
1307 | 1303 | | |
1308 | 1304 | | |
1309 | 1305 | | |
| |||
1334 | 1330 | | |
1335 | 1331 | | |
1336 | 1332 | | |
1337 | | - | |
1338 | | - | |
1339 | | - | |
1340 | | - | |
1341 | | - | |
1342 | | - | |
1343 | | - | |
1344 | | - | |
1345 | | - | |
1346 | | - | |
1347 | | - | |
1348 | | - | |
1349 | | - | |
1350 | | - | |
1351 | | - | |
1352 | | - | |
| 1333 | + | |
1353 | 1334 | | |
1354 | 1335 | | |
1355 | 1336 | | |
| |||
1401 | 1382 | | |
1402 | 1383 | | |
1403 | 1384 | | |
1404 | | - | |
1405 | | - | |
1406 | | - | |
1407 | | - | |
1408 | | - | |
1409 | | - | |
1410 | | - | |
| 1385 | + | |
| 1386 | + | |
1411 | 1387 | | |
1412 | 1388 | | |
1413 | 1389 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
175 | 192 | | |
176 | 193 | | |
177 | 194 | | |
| |||
1080 | 1097 | | |
1081 | 1098 | | |
1082 | 1099 | | |
1083 | | - | |
| 1100 | + | |
1084 | 1101 | | |
1085 | 1102 | | |
1086 | 1103 | | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
1087 | 1123 | | |
1088 | 1124 | | |
1089 | 1125 | | |
1090 | 1126 | | |
1091 | 1127 | | |
1092 | 1128 | | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
1093 | 1132 | | |
1094 | 1133 | | |
1095 | 1134 | | |
| |||
1146 | 1185 | | |
1147 | 1186 | | |
1148 | 1187 | | |
1149 | | - | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
| 1200 | + | |
| 1201 | + | |
| 1202 | + | |
| 1203 | + | |
1150 | 1204 | | |
1151 | 1205 | | |
1152 | 1206 | | |
| |||
1165 | 1219 | | |
1166 | 1220 | | |
1167 | 1221 | | |
| 1222 | + | |
| 1223 | + | |
1168 | 1224 | | |
1169 | 1225 | | |
1170 | 1226 | | |
| |||
1174 | 1230 | | |
1175 | 1231 | | |
1176 | 1232 | | |
| 1233 | + | |
| 1234 | + | |
1177 | 1235 | | |
1178 | 1236 | | |
1179 | 1237 | | |
| |||
1856 | 1914 | | |
1857 | 1915 | | |
1858 | 1916 | | |
1859 | | - | |
1860 | | - | |
1861 | | - | |
1862 | | - | |
1863 | | - | |
1864 | | - | |
1865 | | - | |
1866 | | - | |
1867 | | - | |
| 1917 | + | |
1868 | 1918 | | |
1869 | 1919 | | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
1870 | 1932 | | |
1871 | 1933 | | |
1872 | 1934 | | |
| |||
1888 | 1950 | | |
1889 | 1951 | | |
1890 | 1952 | | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
| 1961 | + | |
| 1962 | + | |
| 1963 | + | |
| 1964 | + | |
1891 | 1965 | | |
1892 | 1966 | | |
1893 | 1967 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
530 | 530 | | |
531 | 531 | | |
532 | 532 | | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
533 | 536 | | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
534 | 542 | | |
535 | 543 | | |
536 | 544 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
989 | 989 | | |
990 | 990 | | |
991 | 991 | | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
992 | 999 | | |
993 | 1000 | | |
994 | 1001 | | |
| |||
Lines changed: 2 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
926 | 926 | | |
927 | 927 | | |
928 | 928 | | |
929 | | - | |
930 | | - | |
| 929 | + | |
931 | 930 | | |
932 | | - | |
933 | | - | |
934 | | - | |
935 | | - | |
936 | 931 | | |
937 | 932 | | |
938 | 933 | | |
| |||
1451 | 1446 | | |
1452 | 1447 | | |
1453 | 1448 | | |
1454 | | - | |
| 1449 | + | |
1455 | 1450 | | |
1456 | 1451 | | |
1457 | 1452 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
| |||
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
20 | 38 | | |
21 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
22 | 110 | | |
23 | 111 | | |
24 | 112 | | |
| |||
0 commit comments