Remove comments from `find_assignment_target` result
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 35.9k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
Bug report
Bug description:
Tools/cases_generator/tier1_generator.py fails if you place comment before PyStackRef_FromPyObjectNew assignment. Example reproducer (bytecodes.c:291-293):
pure inst(LOAD_CONST, (-- value)) {
// comment
value = PyStackRef_FromPyObjectNew(GETITEM(FRAME_CO_CONSTS, oparg));
}
/python.exe Tools/cases_generator/tier1_generator.py
Traceback (most recent call last):
File "/Users/yyanchii/Desktop/cpython/Tools/cases_generator/tier1_generator.py", line 221, in <module>
data = analyze_files(args.input)
File "/Users/yyanchii/Desktop/cpython/Tools/cases_generator/analyzer.py", line 1184, in analyze_files
return analyze_forest(parser.parse_files(filenames))
File "/Users/yyanchii/Desktop/cpython/Tools/cases_generator/analyzer.py", line 1133, in analyze_forest
desugar_inst(node, instructions, uops)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yyanchii/Desktop/cpython/Tools/cases_generator/analyzer.py", line 947, in desugar_inst
uop = make_uop("_" + inst.name, inst, op_inputs, uops)
File "/Users/yyanchii/Desktop/cpython/Tools/cases_generator/analyzer.py", line 854, in make_uop
deferred_refs=analyze_deferred_refs(op),
~~~~~~~~~~~~~~~~~~~~~^^^^
File "/Users/yyanchii/Desktop/cpython/Tools/cases_generator/analyzer.py", line 458, in analyze_deferred_refs
raise analysis_error(
"PyStackRef_FromPyObjectNew() must be assigned to an output", tkn
)
File "/Users/yyanchii/Desktop/cpython/Python/bytecodes.c", line 293
^
SyntaxError: PyStackRef_FromPyObjectNew() must be assigned to an output
Problem is in:
https://github.com/python/cpython/blob/22a442181d5f1ac496dac08e24fd852de404882f/Tools/cases_generator/analyzer.py#L457-L460
as lhs may contain leading comments which are ignored during extraction.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux, macOS, Windows
Linked PRs
- gh-128743
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 trong Tools/cases_generator/analyzer.py, quanh analyze_deferred_refs ở các dòng 457-460, nơi issue xác định các chú thích ở đầu lhs là nguyên nhân. Tái hiện bằng Tools/cases_generator/tier1_generator.py và ví dụ bytecodes.c; được xem là hoàn tất khi một chú thích trước phép gán không còn kích hoạt lỗi PyStackRef_FromPyObjectNew().
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
- tooling
- Loại issue
- Lỗi
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 25/100