Commit c678e8f
committed
[clang] Improve constexpr-unknown diagnostics.
APValue::ConstexprUnknown() constructs a broken LValue that doesn't
have an lvalue path, which confuses later error handling. It turns out
we don't actually use the result of createConstexprUnknownAPValues for
anything, so just stop using it. Just construct the LValue directly when
we need it.
Make findCompleteObject emit errors more aggressively; allowing it to
succeed for constexpr-unknown objects leads to weird states where it
succeeds, but doesn't return a well-formed object.
Delete the check for constexpr-unknown in dynamic_cast handling: it's
not necessary, and breaks with the other changes in this patch.
These changes allow us to produce proper diagnostics when something
fails to be evaluated, instead of just printing a generic top-level
error without any notes.1 parent aa3c5d0 commit c678e8f
File tree
4 files changed
+79
-46
lines changed- clang
- include/clang/Basic
- lib/AST
- test/SemaCXX
4 files changed
+79
-46
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
240 | 240 | | |
241 | 241 | | |
242 | 242 | | |
| 243 | + | |
| 244 | + | |
243 | 245 | | |
244 | 246 | | |
245 | 247 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
205 | | - | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
206 | 208 | | |
207 | 209 | | |
208 | 210 | | |
| |||
571 | 573 | | |
572 | 574 | | |
573 | 575 | | |
574 | | - | |
575 | 576 | | |
576 | 577 | | |
577 | 578 | | |
| |||
646 | 647 | | |
647 | 648 | | |
648 | 649 | | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | 650 | | |
653 | 651 | | |
654 | 652 | | |
| |||
1955 | 1953 | | |
1956 | 1954 | | |
1957 | 1955 | | |
1958 | | - | |
1959 | | - | |
1960 | | - | |
1961 | | - | |
1962 | | - | |
1963 | | - | |
1964 | | - | |
1965 | | - | |
1966 | | - | |
1967 | 1956 | | |
1968 | 1957 | | |
1969 | 1958 | | |
| |||
3493 | 3482 | | |
3494 | 3483 | | |
3495 | 3484 | | |
3496 | | - | |
| 3485 | + | |
3497 | 3486 | | |
3498 | 3487 | | |
3499 | 3488 | | |
| |||
3509 | 3498 | | |
3510 | 3499 | | |
3511 | 3500 | | |
3512 | | - | |
| 3501 | + | |
3513 | 3502 | | |
3514 | 3503 | | |
3515 | 3504 | | |
| |||
3552 | 3541 | | |
3553 | 3542 | | |
3554 | 3543 | | |
3555 | | - | |
| 3544 | + | |
3556 | 3545 | | |
3557 | 3546 | | |
3558 | 3547 | | |
| |||
3659 | 3648 | | |
3660 | 3649 | | |
3661 | 3650 | | |
3662 | | - | |
3663 | | - | |
3664 | | - | |
3665 | | - | |
3666 | | - | |
3667 | | - | |
| 3651 | + | |
| 3652 | + | |
3668 | 3653 | | |
3669 | 3654 | | |
3670 | 3655 | | |
| |||
3947 | 3932 | | |
3948 | 3933 | | |
3949 | 3934 | | |
3950 | | - | |
3951 | | - | |
3952 | | - | |
3953 | | - | |
3954 | | - | |
3955 | 3935 | | |
3956 | 3936 | | |
3957 | 3937 | | |
| |||
4491 | 4471 | | |
4492 | 4472 | | |
4493 | 4473 | | |
| 4474 | + | |
| 4475 | + | |
| 4476 | + | |
| 4477 | + | |
| 4478 | + | |
| 4479 | + | |
| 4480 | + | |
| 4481 | + | |
4494 | 4482 | | |
4495 | 4483 | | |
4496 | 4484 | | |
| |||
6057 | 6045 | | |
6058 | 6046 | | |
6059 | 6047 | | |
6060 | | - | |
6061 | | - | |
6062 | | - | |
6063 | | - | |
6064 | | - | |
6065 | | - | |
6066 | | - | |
6067 | | - | |
6068 | | - | |
6069 | 6048 | | |
6070 | 6049 | | |
6071 | 6050 | | |
| |||
9063 | 9042 | | |
9064 | 9043 | | |
9065 | 9044 | | |
| 9045 | + | |
| 9046 | + | |
| 9047 | + | |
| 9048 | + | |
| 9049 | + | |
| 9050 | + | |
9066 | 9051 | | |
9067 | 9052 | | |
9068 | 9053 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1466 | 1466 | | |
1467 | 1467 | | |
1468 | 1468 | | |
1469 | | - | |
| 1469 | + | |
1470 | 1470 | | |
1471 | 1471 | | |
1472 | 1472 | | |
| |||
1475 | 1475 | | |
1476 | 1476 | | |
1477 | 1477 | | |
1478 | | - | |
| 1478 | + | |
1479 | 1479 | | |
1480 | | - | |
| 1480 | + | |
1481 | 1481 | | |
1482 | 1482 | | |
1483 | 1483 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
47 | | - | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| |||
253 | 255 | | |
254 | 256 | | |
255 | 257 | | |
256 | | - | |
| 258 | + | |
257 | 259 | | |
258 | 260 | | |
259 | 261 | | |
260 | | - | |
261 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
262 | 266 | | |
263 | 267 | | |
264 | 268 | | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
0 commit comments