Plugins and overloads don't interact well
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 20.6k
- Fork
- 3.3k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
While working on our own plugin for self-checking proper types and isinstance() I have tried to use get_function_hook() to emit some additional errors for overloaded functions. However this didn't work for three reasons:
- The hook is called for every item in the overload, not for the overload as a whole.
- The overload logic relies on empty
Messagesas a sign of successful match - The errors emitted during overload selection are discarded afterwards, thus discarding the plugin generated errors
This issue can be fixed in three ways:
- Calling the hook on the overload as a whole after selecting the overload variant and type checking it (this however will be a breaking API change)
- Use newly added error codes to only abandon a variant if the error is due to bad argument type (this is however still bad because
check_call()may have anaccept()call possibly triggering almost arbitrary error including a nested function call with bad argument type). - Use a boolean attribute somewhere that will be set by
check_argument_types()and will be reset after return from everyaccept().
I am leaning towards the last option, since it is most principled IMO.
cc @Michael0x2a
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách lần theo get_function_hook() qua quá trình chọn overload, check_call(), check_argument_types() và accept(). So sánh cách việc khớp overload sử dụng các Messages rỗng và cách các lỗi của plugin bị loại bỏ. Công việc được hoàn tất khi các lỗi do plugin tạo ra vẫn tồn tại qua quá trình chọn overload mà không từ chối sai các biến thể overload hợp lệ, đồng thời vẫn giữ cho hành vi được chọn nhất quán.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- compilers, devtools
- Loại issue
- Lỗi
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100