Commit 7ce1a1e
detect slots layout conflict in multiple inheritance (#3011)
Summary:
- added a check in class metadata computation that detects when two or more base classes define non-empty `__slots__`, which causes a TypeError at runtime in cpython
- removed the `bug` markers from the existing test cases for #2916 and #2917 and added expected error comments
- added new test cases for edge cases - empty slots, both empty, and three bases
Pull Request resolved: #3011
Test Plan:
- ran `cargo test -p pyrefly -- test_slots` - all 27 tests pass
- tested the conflict detection for same slot names (#2916), different slot names (#2917), empty slots (no false positive), and three-base inheritance
fixes #2916
fixes #2917
Reviewed By: yangdanny97
Differential Revision: D99692624
Pulled By: stroxler
fbshipit-source-id: fe63b141eaabf1854a931bedae2b4d05aca133701 parent 2046e72 commit 7ce1a1e
2 files changed
Lines changed: 75 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
402 | 402 | | |
403 | 403 | | |
404 | 404 | | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
405 | 434 | | |
406 | 435 | | |
407 | 436 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
281 | 281 | | |
282 | 282 | | |
283 | 283 | | |
284 | | - | |
285 | 284 | | |
286 | 285 | | |
287 | 286 | | |
| |||
292 | 291 | | |
293 | 292 | | |
294 | 293 | | |
295 | | - | |
| 294 | + | |
296 | 295 | | |
297 | 296 | | |
298 | 297 | | |
299 | 298 | | |
300 | 299 | | |
301 | | - | |
302 | 300 | | |
303 | 301 | | |
304 | 302 | | |
| |||
308 | 306 | | |
309 | 307 | | |
310 | 308 | | |
311 | | - | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
312 | 354 | | |
313 | 355 | | |
314 | 356 | | |
| |||
0 commit comments