Remove comments from `find_assignment_target` result
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza en Tools/cases_generator/analyzer.py alrededor de analyze_deferred_refs en las líneas 457-460, donde el issue identifica los comentarios iniciales en lhs como la causa. Reprodúcelo con Tools/cases_generator/tier1_generator.py y el ejemplo bytecodes.c; se considera terminado cuando un comentario antes de la asignación ya no desencadena el error PyStackRef_FromPyObjectNew().
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- tooling
- Tipo de issue
- Error
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 25/100