Commit 7a137d6
committed
[CS] Allow ExprPatterns to be type-checked in the solver
Previously we would wait until CSApply, which
would trigger their type-checking in
`coercePatternToType`. This caused a number of
bugs, and hampered solver-based completion, which
does not run CSApply. Instead, form a conjunction
of all the ExprPatterns present, which preserves
some of the previous isolation behavior (though
does not provide complete isolation).
We can then modify `coercePatternToType` to accept
a closure, which allows the solver to take over
rewriting the ExprPatterns it has already solved.
This then sets the stage for the complete removal
of `coercePatternToType`, and doing all pattern
type-checking in the solver.1 parent 21e787b commit 7a137d6
File tree
21 files changed
+495
-142
lines changed- include/swift/Sema
- lib
- IDE
- Sema
- test
- Constraints
- IDE
- SILGen
- stdlib
- stmt
- validation-test/Sema
- SwiftUI
- type_checker_crashers_fixed
21 files changed
+495
-142
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1500 | 1500 | | |
1501 | 1501 | | |
1502 | 1502 | | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
1503 | 1507 | | |
1504 | 1508 | | |
1505 | 1509 | | |
| |||
1685 | 1689 | | |
1686 | 1690 | | |
1687 | 1691 | | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
1688 | 1702 | | |
1689 | 1703 | | |
1690 | 1704 | | |
| |||
2148 | 2162 | | |
2149 | 2163 | | |
2150 | 2164 | | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
2151 | 2169 | | |
2152 | 2170 | | |
2153 | 2171 | | |
| |||
2745 | 2763 | | |
2746 | 2764 | | |
2747 | 2765 | | |
| 2766 | + | |
| 2767 | + | |
| 2768 | + | |
2748 | 2769 | | |
2749 | 2770 | | |
2750 | 2771 | | |
| |||
3166 | 3187 | | |
3167 | 3188 | | |
3168 | 3189 | | |
| 3190 | + | |
| 3191 | + | |
| 3192 | + | |
| 3193 | + | |
| 3194 | + | |
| 3195 | + | |
| 3196 | + | |
| 3197 | + | |
| 3198 | + | |
3169 | 3199 | | |
3170 | 3200 | | |
3171 | 3201 | | |
| |||
4315 | 4345 | | |
4316 | 4346 | | |
4317 | 4347 | | |
| 4348 | + | |
| 4349 | + | |
| 4350 | + | |
| 4351 | + | |
| 4352 | + | |
4318 | 4353 | | |
4319 | 4354 | | |
4320 | 4355 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
85 | 91 | | |
86 | 92 | | |
87 | 93 | | |
| |||
109 | 115 | | |
110 | 116 | | |
111 | 117 | | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
126 | 133 | | |
127 | 134 | | |
128 | 135 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8705 | 8705 | | |
8706 | 8706 | | |
8707 | 8707 | | |
| 8708 | + | |
| 8709 | + | |
| 8710 | + | |
8708 | 8711 | | |
8709 | 8712 | | |
8710 | 8713 | | |
| |||
8951 | 8954 | | |
8952 | 8955 | | |
8953 | 8956 | | |
| 8957 | + | |
| 8958 | + | |
| 8959 | + | |
| 8960 | + | |
| 8961 | + | |
| 8962 | + | |
| 8963 | + | |
| 8964 | + | |
| 8965 | + | |
| 8966 | + | |
| 8967 | + | |
| 8968 | + | |
| 8969 | + | |
| 8970 | + | |
| 8971 | + | |
| 8972 | + | |
| 8973 | + | |
| 8974 | + | |
| 8975 | + | |
| 8976 | + | |
| 8977 | + | |
| 8978 | + | |
| 8979 | + | |
| 8980 | + | |
| 8981 | + | |
| 8982 | + | |
| 8983 | + | |
| 8984 | + | |
| 8985 | + | |
| 8986 | + | |
| 8987 | + | |
| 8988 | + | |
| 8989 | + | |
| 8990 | + | |
| 8991 | + | |
| 8992 | + | |
| 8993 | + | |
| 8994 | + | |
| 8995 | + | |
| 8996 | + | |
| 8997 | + | |
| 8998 | + | |
| 8999 | + | |
| 9000 | + | |
| 9001 | + | |
| 9002 | + | |
| 9003 | + | |
| 9004 | + | |
| 9005 | + | |
| 9006 | + | |
| 9007 | + | |
| 9008 | + | |
| 9009 | + | |
| 9010 | + | |
| 9011 | + | |
8954 | 9012 | | |
8955 | 9013 | | |
8956 | 9014 | | |
8957 | 9015 | | |
8958 | 9016 | | |
8959 | | - | |
| 9017 | + | |
| 9018 | + | |
8960 | 9019 | | |
8961 | 9020 | | |
8962 | 9021 | | |
| |||
9021 | 9080 | | |
9022 | 9081 | | |
9023 | 9082 | | |
| 9083 | + | |
| 9084 | + | |
| 9085 | + | |
| 9086 | + | |
9024 | 9087 | | |
9025 | 9088 | | |
9026 | 9089 | | |
9027 | | - | |
| 9090 | + | |
9028 | 9091 | | |
9029 | 9092 | | |
9030 | 9093 | | |
| |||
9171 | 9234 | | |
9172 | 9235 | | |
9173 | 9236 | | |
| 9237 | + | |
| 9238 | + | |
| 9239 | + | |
| 9240 | + | |
9174 | 9241 | | |
9175 | 9242 | | |
9176 | 9243 | | |
9177 | | - | |
| 9244 | + | |
| 9245 | + | |
9178 | 9246 | | |
9179 | 9247 | | |
9180 | 9248 | | |
| |||
9262 | 9330 | | |
9263 | 9331 | | |
9264 | 9332 | | |
9265 | | - | |
| 9333 | + | |
| 9334 | + | |
9266 | 9335 | | |
9267 | 9336 | | |
9268 | 9337 | | |
| |||
9353 | 9422 | | |
9354 | 9423 | | |
9355 | 9424 | | |
9356 | | - | |
9357 | | - | |
9358 | | - | |
9359 | | - | |
9360 | | - | |
9361 | | - | |
9362 | | - | |
9363 | | - | |
9364 | | - | |
9365 | | - | |
9366 | | - | |
9367 | | - | |
9368 | | - | |
9369 | | - | |
9370 | | - | |
9371 | | - | |
9372 | | - | |
9373 | | - | |
9374 | | - | |
9375 | | - | |
9376 | | - | |
9377 | | - | |
9378 | | - | |
9379 | | - | |
9380 | | - | |
9381 | | - | |
9382 | | - | |
9383 | | - | |
9384 | | - | |
9385 | | - | |
9386 | | - | |
9387 | | - | |
9388 | | - | |
9389 | | - | |
9390 | | - | |
9391 | | - | |
9392 | | - | |
9393 | | - | |
9394 | | - | |
| 9425 | + | |
| 9426 | + | |
9395 | 9427 | | |
9396 | | - | |
| 9428 | + | |
| 9429 | + | |
9397 | 9430 | | |
9398 | 9431 | | |
9399 | 9432 | | |
| |||
9461 | 9494 | | |
9462 | 9495 | | |
9463 | 9496 | | |
| 9497 | + | |
| 9498 | + | |
| 9499 | + | |
| 9500 | + | |
| 9501 | + | |
9464 | 9502 | | |
9465 | | - | |
| 9503 | + | |
9466 | 9504 | | |
9467 | 9505 | | |
9468 | 9506 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2453 | 2453 | | |
2454 | 2454 | | |
2455 | 2455 | | |
2456 | | - | |
2457 | | - | |
2458 | | - | |
2459 | | - | |
2460 | | - | |
2461 | | - | |
2462 | 2456 | | |
2463 | 2457 | | |
2464 | 2458 | | |
| |||
2883 | 2877 | | |
2884 | 2878 | | |
2885 | 2879 | | |
2886 | | - | |
2887 | | - | |
2888 | | - | |
2889 | | - | |
2890 | | - | |
2891 | | - | |
2892 | | - | |
2893 | | - | |
2894 | | - | |
| 2880 | + | |
| 2881 | + | |
| 2882 | + | |
| 2883 | + | |
| 2884 | + | |
| 2885 | + | |
2895 | 2886 | | |
2896 | 2887 | | |
2897 | 2888 | | |
| |||
4760 | 4751 | | |
4761 | 4752 | | |
4762 | 4753 | | |
4763 | | - | |
4764 | | - | |
| 4754 | + | |
| 4755 | + | |
| 4756 | + | |
| 4757 | + | |
| 4758 | + | |
| 4759 | + | |
| 4760 | + | |
| 4761 | + | |
| 4762 | + | |
| 4763 | + | |
| 4764 | + | |
| 4765 | + | |
| 4766 | + | |
| 4767 | + | |
4765 | 4768 | | |
4766 | 4769 | | |
4767 | 4770 | | |
| |||
0 commit comments