Commit a0f506a
committed
Use the closure type during type checking for establishing use of new features
When evaluating whether code is within a closure that uses concurrency
features, use the type of the closure as it's known during type checking,
so that contextual information (e.g., it's passed to a `@Sendable` or
`async` parameter of function type) can affect the result. This
corrects the definition for doing strict checking within a minimal
context for the end result of the type-check, rather than it's initial
state, catching more issues.
Fixes SR-15131 / rdar://problem/82535088.
(cherry picked from commit cc7904c)1 parent aeaea11 commit a0f506a
File tree
6 files changed
+111
-53
lines changed- include/swift/Sema
- lib/Sema
- test/Concurrency
6 files changed
+111
-53
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2217 | 2217 | | |
2218 | 2218 | | |
2219 | 2219 | | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
2220 | 2227 | | |
2221 | 2228 | | |
2222 | 2229 | | |
| |||
3096 | 3103 | | |
3097 | 3104 | | |
3098 | 3105 | | |
| 3106 | + | |
| 3107 | + | |
| 3108 | + | |
| 3109 | + | |
| 3110 | + | |
| 3111 | + | |
3099 | 3112 | | |
3100 | | - | |
3101 | | - | |
| 3113 | + | |
| 3114 | + | |
| 3115 | + | |
3102 | 3116 | | |
3103 | 3117 | | |
3104 | 3118 | | |
| |||
4116 | 4130 | | |
4117 | 4131 | | |
4118 | 4132 | | |
| 4133 | + | |
| 4134 | + | |
| 4135 | + | |
| 4136 | + | |
| 4137 | + | |
| 4138 | + | |
4119 | 4139 | | |
4120 | 4140 | | |
4121 | 4141 | | |
| |||
4164 | 4184 | | |
4165 | 4185 | | |
4166 | 4186 | | |
4167 | | - | |
4168 | | - | |
4169 | | - | |
4170 | | - | |
| 4187 | + | |
| 4188 | + | |
| 4189 | + | |
| 4190 | + | |
| 4191 | + | |
| 4192 | + | |
| 4193 | + | |
| 4194 | + | |
| 4195 | + | |
4171 | 4196 | | |
4172 | 4197 | | |
4173 | 4198 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2171 | 2171 | | |
2172 | 2172 | | |
2173 | 2173 | | |
2174 | | - | |
| 2174 | + | |
2175 | 2175 | | |
2176 | 2176 | | |
2177 | 2177 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1098 | 1098 | | |
1099 | 1099 | | |
1100 | 1100 | | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
1101 | 1116 | | |
1102 | 1117 | | |
1103 | 1118 | | |
| |||
1113 | 1128 | | |
1114 | 1129 | | |
1115 | 1130 | | |
1116 | | - | |
| 1131 | + | |
1117 | 1132 | | |
1118 | 1133 | | |
1119 | 1134 | | |
1120 | 1135 | | |
1121 | 1136 | | |
1122 | | - | |
| 1137 | + | |
| 1138 | + | |
1123 | 1139 | | |
1124 | 1140 | | |
1125 | 1141 | | |
1126 | 1142 | | |
1127 | | - | |
| 1143 | + | |
| 1144 | + | |
1128 | 1145 | | |
1129 | 1146 | | |
1130 | 1147 | | |
| |||
1298 | 1315 | | |
1299 | 1316 | | |
1300 | 1317 | | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
1301 | 1325 | | |
1302 | 1326 | | |
1303 | 1327 | | |
| |||
1314 | 1338 | | |
1315 | 1339 | | |
1316 | 1340 | | |
1317 | | - | |
| 1341 | + | |
| 1342 | + | |
1318 | 1343 | | |
1319 | 1344 | | |
1320 | 1345 | | |
| |||
2085 | 2110 | | |
2086 | 2111 | | |
2087 | 2112 | | |
2088 | | - | |
| 2113 | + | |
| 2114 | + | |
2089 | 2115 | | |
2090 | 2116 | | |
2091 | 2117 | | |
| |||
2536 | 2562 | | |
2537 | 2563 | | |
2538 | 2564 | | |
2539 | | - | |
2540 | | - | |
| 2565 | + | |
| 2566 | + | |
| 2567 | + | |
| 2568 | + | |
| 2569 | + | |
| 2570 | + | |
| 2571 | + | |
| 2572 | + | |
2541 | 2573 | | |
2542 | 2574 | | |
2543 | 2575 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
615 | 615 | | |
616 | 616 | | |
617 | 617 | | |
618 | | - | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
619 | 621 | | |
620 | 622 | | |
621 | 623 | | |
| |||
1843 | 1845 | | |
1844 | 1846 | | |
1845 | 1847 | | |
1846 | | - | |
1847 | | - | |
1848 | | - | |
1849 | | - | |
1850 | | - | |
1851 | | - | |
1852 | | - | |
1853 | | - | |
1854 | | - | |
1855 | | - | |
1856 | | - | |
1857 | | - | |
1858 | | - | |
1859 | | - | |
1860 | 1848 | | |
1861 | 1849 | | |
1862 | 1850 | | |
| |||
1917 | 1905 | | |
1918 | 1906 | | |
1919 | 1907 | | |
1920 | | - | |
| 1908 | + | |
1921 | 1909 | | |
1922 | 1910 | | |
1923 | 1911 | | |
| |||
1926 | 1914 | | |
1927 | 1915 | | |
1928 | 1916 | | |
1929 | | - | |
| 1917 | + | |
1930 | 1918 | | |
1931 | 1919 | | |
1932 | 1920 | | |
| |||
1939 | 1927 | | |
1940 | 1928 | | |
1941 | 1929 | | |
1942 | | - | |
| 1930 | + | |
1943 | 1931 | | |
1944 | 1932 | | |
1945 | 1933 | | |
| |||
1955 | 1943 | | |
1956 | 1944 | | |
1957 | 1945 | | |
1958 | | - | |
| 1946 | + | |
1959 | 1947 | | |
1960 | 1948 | | |
1961 | 1949 | | |
| |||
2068 | 2056 | | |
2069 | 2057 | | |
2070 | 2058 | | |
2071 | | - | |
| 2059 | + | |
2072 | 2060 | | |
2073 | 2061 | | |
2074 | 2062 | | |
| |||
3562 | 3550 | | |
3563 | 3551 | | |
3564 | 3552 | | |
3565 | | - | |
| 3553 | + | |
| 3554 | + | |
| 3555 | + | |
3566 | 3556 | | |
3567 | 3557 | | |
3568 | 3558 | | |
| |||
3574 | 3564 | | |
3575 | 3565 | | |
3576 | 3566 | | |
| 3567 | + | |
| 3568 | + | |
| 3569 | + | |
| 3570 | + | |
| 3571 | + | |
| 3572 | + | |
3577 | 3573 | | |
3578 | 3574 | | |
3579 | 3575 | | |
| |||
4049 | 4045 | | |
4050 | 4046 | | |
4051 | 4047 | | |
4052 | | - | |
| 4048 | + | |
| 4049 | + | |
4053 | 4050 | | |
4054 | 4051 | | |
4055 | 4052 | | |
4056 | | - | |
| 4053 | + | |
4057 | 4054 | | |
4058 | 4055 | | |
4059 | 4056 | | |
| |||
4172 | 4169 | | |
4173 | 4170 | | |
4174 | 4171 | | |
4175 | | - | |
| 4172 | + | |
| 4173 | + | |
4176 | 4174 | | |
| 4175 | + | |
4177 | 4176 | | |
4178 | | - | |
4179 | | - | |
| 4177 | + | |
4180 | 4178 | | |
4181 | 4179 | | |
4182 | 4180 | | |
| |||
4190 | 4188 | | |
4191 | 4189 | | |
4192 | 4190 | | |
4193 | | - | |
| 4191 | + | |
4194 | 4192 | | |
4195 | 4193 | | |
4196 | 4194 | | |
| |||
4232 | 4230 | | |
4233 | 4231 | | |
4234 | 4232 | | |
4235 | | - | |
| 4233 | + | |
| 4234 | + | |
| 4235 | + | |
| 4236 | + | |
4236 | 4237 | | |
4237 | 4238 | | |
4238 | 4239 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
217 | | - | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
218 | 220 | | |
219 | 221 | | |
220 | 222 | | |
| |||
337 | 339 | | |
338 | 340 | | |
339 | 341 | | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
347 | 345 | | |
348 | 346 | | |
349 | 347 | | |
350 | 348 | | |
351 | 349 | | |
352 | 350 | | |
353 | 351 | | |
354 | | - | |
355 | | - | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
356 | 355 | | |
357 | 356 | | |
358 | 357 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
153 | | - | |
| 153 | + | |
| 154 | + | |
154 | 155 | | |
155 | 156 | | |
156 | 157 | | |
0 commit comments