python / python/cpython

Remove comments from `find_assignment_target` result

未關閉
#128,742 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

interpreter-core type-bug
主要語言
Python
星號
77.2k
分支
36k
PR 合併指標
PR 指標待擷取

描述

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

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

研究方向

從 Tools/cases_generator/analyzer.py 中 457-460 行附近的 analyze_deferred_refs 開始,issue 在此處指出 lhs 中的前置註解是原因。使用 Tools/cases_generator/tier1_generator.py 和 bytecodes.c 範例重現;當指派前的註解不再觸發 PyStackRef_FromPyObjectNew() 錯誤時,即表示完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
python
領域
tooling
Issue 類型
缺陷
難度
2/5
預估耗時
1-3 小時
活躍度
停滯
描述清晰度
描述清楚
新手友好度
25/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。